Mundarija:
- 1 -qadam: Asosiy narsalar talab qilinadi
- 2 -qadam: tizim
- 3 -qadam: Vaqtni kodlash
- 4 -qadam: uni birlashtirish
- 5 -qadam: Natijalar
- 6 -qadam: noto'g'ri pozitivlar
Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Muammo - sizning bog'ingizdan hojatxona sifatida foydalanadigan mushuklar
Yechim - youtube -ga avtomatik yuklash xususiyatiga ega bo'lgan mushuk sug'orish mashinasini qurishga ko'p vaqt sarflang
Bu bosqichma -bosqich emas, balki qurilishning umumiy ko'rinishi va ba'zi kodlar
#BeforeYouCallPETA - Mushuklar yaxshi, yomg'ir singari past bosimli purkagich, ular hatto o'zlarini aylanib o'tishdan oldin yugurib ketishlari mumkin. Loyiha - mushukni ho'llash emas, balki ular mening bog'imni Barkers tuxumining mushuk versiyasi bilan to'ldirishidan oldin ularni ko'rsatish.
1 -qadam: Asosiy narsalar talab qilinadi
Raspberry Pi zero va SD karta
Raspberry Pi kamerasi
Estafeta
555 taymer …. (yoki 555 taymeringiz kelmasa, arduino va boshqa o'rni)
Solenoid
Sprinkler
Elektronika uchun qandaydir uy
6 tonna bolg'a bilan metaforik mixga urish istagi
Kam o'lchamli kamera, siz suvni deyarli ko'rmaysiz, lekin mushuklarning yugurayotganini ko'rishingiz mumkin
2 -qadam: tizim
1, Pi kamerasi mushuk o'lchamidagi ob'ektni bir nechta kamera ramkalari uchun harakatlanayotganini aniqlaydi (keyingi bosqichda o'chirilgan)
2, Pi purkagichni ishga tushiradi
3, mushuk qopqoq uchun yuguradi
4, rohat ko'rish uchun video avtomatik ravishda youtube -ga yuklanadi
3 -qadam: Vaqtni kodlash
OpenCV yordamida kadrlarni olib tashlash yordamida siz vaqt o'tishi bilan o'zgarib turadigan joylarni topishingiz mumkin, ba'zi bir funktsiyalarni ishlatib, bu o'zgarishlarning qanchalik katta ekanligini va ular vaqt o'tishi bilan saqlanib qolishini aniqlashingiz mumkin, va eng muhimi, mushukning kattaligini bilib olishingiz mumkin.
Agar siz google -da tezkor qidiruv qilsangiz, ramkalarni olib tashlash bo'yicha juda ko'p qo'llanmalar mavjud.
Kod qanday ishlashini ko'rib chiqish
1, kamera ramkalarni olishda va ularni oxirgi bilan solishtirishda davom etmoqda
2, agar mushukning kattaligi aniqlansa, u qayd qilinadi
3, agar mushuk o'lchamidagi o'zgarish 4 kvadrat atrofida davom etsa, pi GPU -ni ishlatib, arduino -ni ishga tushiradi.
4, arduino ikkinchi o'rni 5 soniya davomida elektromagnitni faollashtiradigan signal yuboradi
5, solenoid yoqilganda suv purkagichga o'tadi
6, purkagich faol bo'lganda, kamera aniqlanmaydi va videoni yozib oladi
7, video Youtube -ga yuklangan
8, nozik sozlash tizimi uchun dropbox -ga yuklangan rasmlar
Eslatma - Nega men 5 soniya davomida solenoidni yoqish uchun 2 ta o'rni va arduino ishlatdim?..
1, pi videoni yozayotganda solenoidni ishga tushira olmaydi va to'xtata olmaydi, chunki python skriptlari video tugaguncha to'xtatiladi, shuning uchun arduino (yoki 555 taymer) solenoidni skriptga mustaqil ravishda ochish va yopish imkonini beradi. video hali yozilmoqda.
2, birinchi o'rni va arduino 555 taymer bilan almashtirilishi mumkin, lekin bu loyiha vaqtida kelmagan, 555 ko'p vaqt va qadamlarni tejaydi.
3, Pi to'g'ridan -to'g'ri elektromagnitni ishga sola olmaydi, chunki Pi GPIO 3.3v va 51mA maksimal tezlikda ishlaydi va solenoid 5V va 51mA dan ko'proq tetiklanishni xohlaydi.
4, har bir ramka keraksiz joylarda, masalan, qo'shnilar bog'ida harakatni aniqlashni olib tashlash uchun kesilishi mumkin. Agar bu bajarilmasa, qo'shnilar sizning bog'ingizga chalkash ko'rinish bilan qarashadi, chunki suv purkagich har safar o'z uyiga kirishni xohlasa o'chadi.
5, ehtimol, men aniq bir narsani sog'indim va uni shunday sozlash uchun vaqtimni behuda sarfladim.
Quyidagi kod
import cv2import numpy np import argparse #cat import vaqti import GPP sifatida import qilish RPi. GPIO picamera.array dan PiRGBArray dan import qilish PiCamera #------------------ ------------------------------ Youtube-ga yuklash ----------------- ---------------------- HD HDYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger relay GPIO.output (11, True) time.sleep (.5) GPIO.output (11, False) print ("Video olish")) harakat qilib ko'ring: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #YouTube -ga chop etishga yuklash ("YouTube -ga yuklash") os. tizim ('sudo youtube-upload --title = "Mushuk ho'llangan {0}" --client-sirlari = client_secret.json vid {0}.h264'.format (vidname)) #os.remove tugagach videofaylni olib tashlang ('vid {0}.h264'.format (vidname)) print ("Video Pi-dan yuklangan va o'chirilgan") bundan mustasno: pass #-------------------- ---------------------------- Dropbox-da qolmoqda ------------------- ------------------- St St. illsToDropbox (): print ("Hali ham Dropbox funktsiyasiga yuklanmoqda") access_token = 'Voy, siz sehrli so'zni aytmadingiz… Oh ah, siz sehrli so'zni aytmadingiz' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") urinib ko'ring: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) chop etish (fayl nomi) mijoz = dropbox.client. DropboxClient (access_token) image = ochiq ("ToDropbox.jpg", 'rb') client.put_file (fayl nomi, rasm) image.close () os.remove ("ToDropbox).jpg ") bundan mustasno: pass #------------------------------------------ ------ Harakatni aniqlash ----------------------------------------- def DetectMotion (): #Define min_area = 400 tolarance = 25 #pixel in bluramount = 21 timetoforget = 0.5 yadro = np.ones ((5, 5), np.uint8) #dialate MotionCounter uchun ishlatiladi = 0 MinTargetArea = 600 # MaxTargetArea aniqlash uchun eng kichik o'lcham = 5000 #Hozir aniqlash uchun eng katta o'lcham = time.time () keyin = time.time () #kamera kamerasini boshlang = PiCamera () camera.resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray (kamera, o'lcham = (640, 480)) #kamera isinish vaqti. Uxlash (1) #Gram birinchi ramka va uni cv2 ga kiritish uchun tayyorlang = rawCapture.array #Kiruvchi PolyCrop = np.array (
#QandayTriggerRealProgrammersWithBadCode
4 -qadam: uni birlashtirish
Elektr o'tkazgichlarni suv o'tkazmaydigan korpusga mahkamlang, narsalarni devorlarga burang va ko'p yopishqoq lenta va issiq elimdan foydalaning
5 -qadam: Natijalar
U ishlaganda ishlaydi
6 -qadam: noto'g'ri pozitivlar
Bu bo'lmaganda, u mushuklarning soyasini sochadi, sizning xotiningiz va qizingiz.
Maslahat - eshik oldiga harakatni aniqlash dasturini to'xtatadigan kalitni qo'ying ….. keyin axlat qutilarini chiqarayotganda uni ishlatishni unutmang.
Umid qilamanki, men dasturlash, elektronika va o'z qo'llarim bilan qilgan barcha xatolarimdan g'azablandim va ayniqsa imlo xatolarim sizga yoqdi deb umid qilaman.
Tavsiya:
Vision LED xodimlarining barqarorligi: 11 qadam (rasmlar bilan)
Vision LED xodimlarining turg'unligi: Ma'lumki, yorug'lik o'chirilganidan keyin ham, inson ko'zlari " ko'rish " bu soniyaning bir qismi uchun. Bu "Vizyonning barqarorligi" yoki "POV" deb nomlanadi va bu sizga "bo'yash" imkonini beradi. tasmani tez siljitish orqali rasmlar
Batareya bilan ishlaydigan ofis. Quyosh panellari va shamol turbinasi: Sharq/G'arbni avtomatik almashtirish bilan quyosh tizimi: 11 qadam (rasmlar bilan)
Batareya bilan ishlaydigan ofis. Quyosh tizimi Sharq/G'arbning avtomatik panellari va shamol turbinasi bilan almashinuvi bilan: Loyiha: 200 kvadrat metrli ofis batareyali bo'lishi kerak. Ofis, shuningdek, ushbu tizim uchun zarur bo'lgan barcha tekshirgichlar, batareyalar va komponentlarni o'z ichiga olishi kerak. Quyosh va shamol energiyasi batareyalarni zaryad qiladi. Faqat kichik muammo bor
Raspberry PI Vision Processor (SpartaCam): 8 qadam (rasmlar bilan)
Raspberry PI Vision Processor (SpartaCam): FIRST Robotics Competition robotingiz uchun Raspberry PI ko'rish protsessor tizimi. FIRST haqida Vikipediya, https://en.wikipedia.org/wiki/FIRST_Robotics_Compe bepul ensiklopediyasi … FIRST Robotics Competition (FRC) - bu xalqaro yuqori darajadagi
Micro: bit MU Vision Sensor va Zip Tile kombinatsiyalangan: 9 qadam (rasmlar bilan)
Micro: bit MU Vision Sensor va Zip Tile kombinatsiyalangan: Shunday qilib, biz ushbu loyihada MU ko'rish sensorini Kitronik Zip Tile bilan birlashtirmoqchimiz. Biz MU ko'rish sensori yordamida ranglarni taniymiz va Zip Tile -ni bizga ko'rsatamiz. Biz ilgari ishlatgan ba'zi texnikalarni qo'llaymiz
Vaqt o'tishi bilan rasmlar uchun kamera osonlashtirildi: 22 qadam (rasmlar bilan)
Vaqt o'tishi bilan suratga olish uchun kamera osonlashtirildi. Men boshqa ko'rsatmalarni vaqtni tez suratga olish filmlarini suratga olishni tekshirib ko'rdim. U kino qismini juda yaxshi yoritgan. U filmlar yaratish uchun yuklab olishingiz mumkin bo'lgan bepul dasturiy ta'minot haqida gapirib berdi. Men o'z -o'zimga aytdim, men o'ylaymanki, agar men qila olsam