Kazalo:

Cat-a-way-Cat Vision Cat Računalniški vid: 6 korakov (s slikami)
Cat-a-way-Cat Vision Cat Računalniški vid: 6 korakov (s slikami)

Video: Cat-a-way-Cat Vision Cat Računalniški vid: 6 korakov (s slikami)

Video: Cat-a-way-Cat Vision Cat Računalniški vid: 6 korakov (s slikami)
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Junij
Anonim
Cat-a-way-računalniški vid Mačje škropilnice
Cat-a-way-računalniški vid Mačje škropilnice

Težava - mačke vaš vrt uporabljajo kot stranišče

Rešitev - porabite preveč časa za izdelavo brizgalne za mačke s funkcijo samodejnega nalaganja na youtube

To ni korak za korakom, ampak pregled gradnje in nekaj kode

#BeforeYouCallPETA - Mačke so v redu, škropilnica z nizkim pritiskom, tako kot dež, ki jo lahko prehitijo, še preden se celo obrne okoli njih. Projekt ni namočiti mačko, ampak jo odtrgati, preden mi zatrejo vrt z mačjo različico jajc Barkers.

1. korak: Potrebne so glavne postavke

Glavni elementi so potrebni
Glavni elementi so potrebni

Raspberry Pi zero & SD kartica

Fotoaparat Raspberry Pi

Rele

Časovnik 555…. (ali arduino in drug rele, če ne pridejo vaši časovniki 555)

Solenoid

Razpršilnik

Nekakšno ohišje za elektroniko

Pripravljenost udariti v metaforični žebelj s 6 -tonskim kladivom

Kamera s tako majhno ločljivostjo, da komaj vidite vodo, a vseeno lahko vidite mačke, ki tečejo v zavetje

2. korak: Sistem

Image
Image

1, Pi kamera zazna predmet v velikosti mačke, ki se premika za nekaj okvirjev kamere (podrobneje v naslednjem koraku)

2, Pi sproži brizgalno

3, Cat teče v zavetje

4, videoposnetek se samodejno naloži na youtube za užitek gledanja

3. korak: Čas kodiranja

Sestavljanje skupaj
Sestavljanje skupaj

Z uporabo openCV z odštevanjem okvirja lahko najdete območja okvirja, ki se sčasoma spreminjajo, z nekaj vrhunskimi funkcijami pa lahko ugotovite, kako velike so te spremembe in ali se sčasoma pojavljajo, in kar je najpomembneje, ugotovite, ali so velikosti mačk.

Obstaja kar nekaj vaj o odštevanju okvirjev, ki so zelo podrobne, če opravite hitro iskanje v Googlu.

Pregled delovanja kode

1, Kamera neprestano zajema okvirje in jih primerja z zadnjimi

2, Če se zazna oblika mačke, se to zabeleži

3, če se sprememba velikosti mačke nadaljuje v približno 4 sličicah, pi uporabi GPIO za napajanje releja za zagon arduina

4, Arduino pošlje signal za vklop drugega releja za 5 sekund, ki aktivira elektromagnet

5, elektromagnet, ko je vklopljen, omogoča dovajanje vode v brizgalno

6, Ko je brizgalka aktivna, kamera preneha zaznavati in snema video

7, Video je naložen na Youtube

8, Posnetki naloženi v dropbox za sistem natančne nastavitve

Opomba - Zakaj sem na koncu uporabil 2 releja in arduino za vklop solenoida za 5 sekund …

1, pi ne more zagnati in ustaviti solenoida med snemanjem videoposnetka, ko se python skripti zaustavijo, dokler se videoposnetek ne konča, zato je potreba po arduinu (ali merilniku 555), da se elektromagnet odpre in zapre neodvisno od skripta, medtem ko se video se še snema.

2, prvi rele in arduino lahko zamenjate s časovnikom 555, vendar to ni prišlo pravočasno za ta projekt, 555 bi prihranil veliko časa denarja in korakov.

3, pi ne more neposredno sprožiti solenoida, saj Pi GPIO deluje na 3,3 V in 51 mA max, solenoid pa želi, da se sproži 5 V in veliko več kot 51 mA.

4, Vsak okvir je mogoče obrezati, da odstranite zaznavanje gibanja na neželenih območjih, na primer na sosedskem vrtu. Če tega ne storite, bo sosed zmedeno pogledal v vaš vrt, ker se brizgalna izklopi vsakič, ko želi v svojo lopo.

5, verjetno sem zamudil nekaj očitnega in sem izgubil čas, da sem to nastavil tako.

Koda spodaj

uvoz cv2import numpy kot np uvoz argparse #cat čas uvoza uvoz RPi. GPIO kot GPIO uvoz os uvoz dropbox iz picamera.array uvoz PiRGBArray iz picamere uvoz PiCamera #------------------ ------------------------------ Naloži na youtube ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger rele GPIO.output (11, True) time.sleep (.5) GPIO.output (11, False) print ("Taking Video") poskusite: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Naloži na tiskalnik youtube ("Nalaganje na YouTube") os. system ('sudo youtube-upload --title = "Mačka je postala mokra {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Odstranite video datoteko, ko končate os.remove ('vid {0}.h264'.format (vidname)) print ("Videoposnetek naložen in odstranjen iz Pi"), razen: pass #-------------------- ---------------------------- Še vedno v dropboxu ------------------- -------------------- def St. illsToDropbox (): print ("Nalaganje fotografije v funkcijo Dropbox") access_token = 'Ah ah ah, nisi rekel čarobne besede … Ah ah ah, nisi rekel čarobne besede' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") poskus: ime datoteke =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (ime datoteke) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (ime datoteke, slika) image.close () os.remove ("ToDropbox.jpg ") razen: pass #------------------------------------------ ------ Zaznaj gibanje ----------------------------------------- def DetectMotion (): #Define vars min_area = 400 tolarance = 25 #change in pixel bluramount = 21 timetoforget = 0.5 kernel = np.ones ((5, 5), np.uint8) #used for dialate MotionCounter = 0 MinTargetArea = 600 # najmanjša velikost za zaznavanje MaxTargetArea = 5000 #Največja velikost za zaznavanje zdaj = time.time () then = time.time () #inicializirajte kamero kamere = PiCamera () camera.resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray (camera, size = (640, 480)) #warmup camera time.sleep (1) #Zgrabi prvi okvir in ga pripravi za prehod v cv2.acumulate weight camera.capture (rawCapture, format = "bgr") povprečno = rawCapture.array #Izreži neželeno območje PolyCrop = np.array (

#HowToTriggerRealProgrammersWithBadCode

4. korak: Sestavite skupaj

Sestavljanje skupaj
Sestavljanje skupaj
Sestavljanje skupaj
Sestavljanje skupaj
Sestavljanje skupaj
Sestavljanje skupaj

Elektriko vstavite v vodotesno ohišje, privijte stvari v stene in uporabite veliko lepilnega traku in vročega lepila

5. korak: Rezultati

Image
Image
Rezultati
Rezultati

Ko deluje, deluje

6. korak: lažno pozitivni rezultati

Lažno pozitivni
Lažno pozitivni

Ko ne, poškropi mačje sence, ženo in hčerko.

Pro -tip - Stikalo postavite ob vrata, ki začasno ustavi program zaznavanja gibanja….. nato ga pozabite uporabiti in se prepojite, ko odložite koše.

Upam, da sem naredil kakšnega strokovnjaka za programiranje, elektroniko in DIY vse te napake, ki sem jih verjetno naredil, predvsem pa upam, da ste uživali v vseh mojih pravopisnih napakah.

Priporočena: