Obsah:

Cat-a-way-Computer Vision Cat Sprinkler: 6 kroků (s obrázky)
Cat-a-way-Computer Vision Cat Sprinkler: 6 kroků (s obrázky)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 kroků (s obrázky)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 kroků (s obrázky)
Video: Фей-Фей Ли: Как мы учим компьютеры понимать изображения 2024, Listopad
Anonim
Cat-a-way-počítačový vidění Cat Sprinkler
Cat-a-way-počítačový vidění Cat Sprinkler

Problém - Kočky využívají vaši zahradu jako toaletu

Řešení - Věnujte příliš mnoho času tvorbě postřikovače pro kočky s funkcí automatického nahrávání na YouTube

Nejde o krok za krokem, ale o přehled konstrukce a nějaký kód

#BeforeYouCallPETA - Kočky jsou v pořádku, je to nízkotlaký postřikovač stejně jako déšť, který mohou předběhnout, než se k nim dokonce otočí. Cílem není namočit kočku, ale odhalit ji, než mou zahradu posypou kočičí verzí Barkers Eggs.

Krok 1: Požadované hlavní položky

Hlavní požadované položky
Hlavní požadované položky

Raspberry Pi nula a SD karta

Fotoaparát Raspberry Pi

Relé

555 časovač…. (nebo arduino a další relé, pokud nedorazí časovače 555)

Solenoid

Sprinkler

Nějaký kryt pro elektroniku

Ochota zasáhnout metaforický hřebík 6tunovým kladivem

Fotoaparát s tak malým rozlišením, že sotva vidíte vodu, ale stále můžete vidět, jak se kočky utíkají schovat

Krok 2: Systém

Image
Image

1, kamera Pi detekuje objekt velikosti kočky, který se pohybuje po několik rámečků kamery (vysvětleno v dalším kroku)

2, Pi spouští postřikovač

3, Cat běží na úkryt

4, Video se automaticky nahrává na youtube pro potěšení ze sledování

Krok 3: Čas kódování

Dát to dohromady
Dát to dohromady

Pomocí openCV pomocí odčítání rámců můžete najít oblasti rámce, které se v průběhu času mění, pomocí některých šikovných funkcí můžete zjistit, jak velké tyto změny jsou a zda v průběhu času přetrvávají, a hlavně zjistit, zda mají velikost kočky.

Existuje několik návodů na odečítání snímků, které jdou velmi rychle, pokud provedete rychlé vyhledávání Google.

Přehled toho, jak kód funguje

1, Fotoaparát stále snímá snímky a porovnává je s posledními

2, Pokud je detekován tvar velikosti kočky, je zaznamenán

3, Pokud změna velikosti kočky přetrvává kolem 4 snímků, pi používá GPIO k napájení relé pro spuštění arduina

4, Arduino vyšle signál k napájení druhého relé na 5 sekund, které aktivuje solenoid

5, Solenoid při napájení propouští vodu do postřikovače

6, Je -li sprinkler aktivní, kamera přestane detekovat a nahrávat video

7, Video se nahraje na Youtube

8, Stills uploaded to dropbox for fine tuning system

Poznámka - Proč jsem nakonec použil 2 relé a arduino k zapnutí solenoidu na 5 sekund…..

1, Pi nemůže spouštět a zastavovat solenoid při nahrávání videa, protože python scrips se pozastavuje, dokud není video dokončeno, a proto je potřeba arduino (nebo časovač 555) umožnit solenoidu otevřít a zavřít nezávisle na skriptu, zatímco video se stále nahrává.

2, První relé a arduino lze nahradit časovačem 555, ale to pro tento projekt nepřišlo včas, 555 by ušetřilo spoustu času, peněz a kroků.

3, Pi nemůže spouštět solenoid přímo, protože Pi GPIO pracuje na max. 3,3 V a 51 mA a solenoid chce spustit 5 V a mnohem více než 51 mA.

4, každý snímek lze oříznout, aby se odstranila detekce pohybu v nežádoucích oblastech, jako je například zahrada neigbors. Pokud tak neučiníte, bude mít uvedený soused zmatený pohled do vaší zahrady, protože postřikovač se vypne pokaždé, když chce jít do své kůlny.

5, Pravděpodobně mi něco zjevného uniklo a promrhal jsem čas tím, že jsem to takto nastavil.

Kód níže

import cv2import numpy as np import argparse #cat doba importu import RPi. GPIO as GPIO import os import dropbox from picamera.array import PiRGBArray from picamera import PiCamera #------------------ ------------------------------ Nahrát na youtube ----------------- ---------------------- def HDtoYoutube (): 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 ("Taking Video") zkuste: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Upload to youtube print ("Uploading to YouTube") os. system ('sudo youtube-upload --title = "Cat Got Wet {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Remove video file when done os.remove ('vid {0}.h264'.format (vidname)) tisk ("Video nahráno a odstraněno z Pi") kromě: průchod #-------------------- ---------------------------- Stále do schránky ------------------- -------------------- def St illsToDropbox (): print ("Nahrávání stále do funkce Dropbox") access_token = 'Ah ah ah, neřekl jsi kouzelné slovo … Ah ah ah, neřekl jsi kouzelné slovo' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") try: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) tisk (název souboru) klient = dropbox.client. DropboxClient (access_token) obrázek = otevřený ("ToDropbox.jpg", 'rb') client.put_file (název souboru, obrázek) image.close () os.remove ("ToDropbox-j.webp

#HowToTriggerRealProgrammersWithBadCode

Krok 4: Dát to dohromady

Dát to dohromady
Dát to dohromady
Dát to dohromady
Dát to dohromady
Dát to dohromady
Dát to dohromady

Namáčkněte elektriku do vodotěsného pouzdra, zašroubujte věci do zdí a použijte spoustu lepicí pásky a horkého lepidla

Krok 5: Výsledky

Image
Image
Výsledek
Výsledek

Když to funguje, funguje to

Krok 6: Falešná pozitiva

Falešně pozitivní
Falešně pozitivní

Když ne, stříká stíny koček, vaše žena a vaše dcera.

Pro -tip - Zapněte spínač u dveří, který pozastaví program detekce pohybu ….. pak jej zapomeňte použít a při vykládání popelnic se namočte.

Doufám, že jsem udělal nějaké odborníky na programování, elektroniku a kutilství se všemi chybami, kterých jsem se pravděpodobně dopustil, a hlavně doufám, že se vám všechny moje pravopisné chyby líbily.

Doporučuje: