- Súčasti sú povinné
- Inštalácia OpenCV na Raspberry Pi
- Inštalácia ďalších požadovaných balíkov
- Nastavenie ThingSpeak pre počítanie ľudí
- Inštalácia hardvéru
- Vysvetlenie programu Python pre počítadlo ľudí
- Testovanie
V dnešnom svete špičkových technológií rastie digitálne spracovanie obrazu veľmi rýchlo a stáva sa dôležitou súčasťou mnohých digitálnych zariadení, ako sú mobilné telefóny, bezpečnostné kamery, notebooky atď.
Najbežnejšie aplikácie digitálneho spracovania obrazu sú detekcia objektov, rozpoznávanie tváre a počítanie osôb. V tomto výučbe teda vytvoríme dav OpenCV počítajúci pomocou Raspberry Pi a ThingSpeak. Tu bude modul kamery pi použitý na nepretržité snímanie snímok a potom budú tieto snímky spracované pomocou HOG (deskriptor objektov orientovaných na histogram) na detekciu objektov v obraze. Potom sa tieto rámce porovnajú s vopred vyškoleným modelom OpenCV na detekciu ľudí. Počítanie ľudí sa zobrazí na kanáli ThingSpeak, ktorý je možné sledovať odkiaľkoľvek na svete.
Súčasti sú povinné
Hardware
- Raspberry Pi 3 (ľubovoľná verzia)
- Kamera Pi
Softvér a online služby
- ThingSpeak
- Python3.0
- OpenCV3.0
Inštalácia OpenCV na Raspberry Pi
Tu sa na detekciu davu použije knižnica OpenCV. Ak chcete nainštalovať OpenCV, najskôr aktualizujte Raspberry Pi.
sudo apt-get aktualizácia
Potom nainštalujte požadované závislosti pre inštaláciu OpenCV na vašom Raspberry Pi.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get nainštalovať libqt4-test –y
Potom nainštalujte OpenCV na Raspberry Pi pomocou nižšie uvedeného príkazu.
pip3 nainštaluj opencv-contrib-python == 4.1.0.25
Predtým sme používali program OpenCV s programom Raspberry pi a vytvorili sme k nemu množstvo návodov.
- Inštalácia OpenCV na Raspberry Pi pomocou CMake
- Rozpoznávanie tváre v reálnom čase s Raspberry Pi a OpenCV
- Rozpoznávanie ŠPZ pomocou Raspberry Pi a OpenCV
Tiež sme vytvorili sériu tutoriálov OpenCV začínajúcich od úrovne začiatočníkov.
Inštalácia ďalších požadovaných balíkov
Pred programovaním Raspberry Pi pre Crowd Counting si nainštalujeme ďalšie požadované balíčky.
Inštalácia imutils : imutils sa používa na vykonávanie niekoľkých potrebných funkcií spracovania obrazu, ako je preklad, rotácia, zmena veľkosti, skeletonizácia a jednoduchšie zobrazovanie obrázkov Matplotlib pomocou OpenCV. Nainštalujte teda imutils pomocou príkazu dole:
pip3 nainštalovať imutils
matplotlib : Potom nainštalujteknižnicu matplotlib. Matplotlib je komplexná knižnica na vytváranie statických, animovaných a interaktívnych vizualizácií v Pythone.
pip3 nainštalovať matplotlib
Nastavenie ThingSpeak pre počítanie ľudí
ThingSpeak je veľmi populárna platforma IoT a pomocou platformy ThingSpeak môžeme sledovať naše údaje cez internet odkiaľkoľvek. Používa sa tiež na ovládanie systému cez internet pomocou kanálov a webových stránok poskytovaných spoločnosťou ThingSpeak. Predtým sme program ThingSpeak použili na vytvorenie mnohých projektov založených na IoT.
Ak chcete najskôr vytvoriť kanál na ThingSpeak, najskôr sa zaregistrujte na ThingSpeak. V prípade, že už máte účet na ThingSpeak, prihláste sa pomocou svojho ID a hesla.
Kliknite na Sing up a zadajte svoje podrobnosti.
Potom overte svoje e-mailové ID a kliknite na tlačidlo Pokračovať.
Po prihlásení teraz vytvorte nový kanál kliknutím na tlačidlo „ Nový kanál “.
Po kliknutí na „ Nový kanál“ zadajte názov a popis údajov, ktoré chcete na tento kanál nahrať. Tu sme vytvorili jedno pole s názvom Ľudia . Podľa požiadaviek je možné vytvoriť viac polí.
Potom kliknite na tlačidlo uložiť kanál a uložte podrobnosti.
Ak chcete odoslať údaje do služby ThingSpeak, zadajte kľúč API a ID kanála v skripte Python, takže skopírujte kľúč API a ID kanála.
Inštalácia hardvéru
Tu pre tento projekt počítania ľudí s OpenCV vyžadujeme iba kameru Raspberry Pi a Pi a stačí pripojiť plochý konektor fotoaparátu do slotu pre kameru uvedeného v Raspberry pi
Kameru Pi je možné použiť na stavbu rôznych zaujímavých projektov, ako je napríklad Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System atď.
Vysvetlenie programu Python pre počítadlo ľudí
Kompletný pythonovský kód pre tento projekt počítajúci dav OpenCV je uvedený na konci stránky. Tu vysvetľujeme dôležité časti kódu pre lepšie vysvetlenie.
Na začiatku kódu teda importujte všetky požadované knižnice, ktoré sa majú v tomto projekte použiť.
import cv2 import imutils z imutils.object_detection import non_max_suppression import numpy ako np požiadavky na import čas importu import base64 z matplotlib import pyplot ako plt z urllib.request import urlopen
Po importe knižníc zadajte ID kanála ThingSpeak a napíšte kľúč API, ktorý ste predtým skopírovali.
channel_id = 812060 # ID VLOŽTE KANÁL TU WRITE_API = 'X5AQ3EGIKMBYW31H' # VKLADAŤ VÁŠ KLÍČ NA ZÁPIS TU BASE_URL = "https://api.thingspeak.com/update?api_key= {}". formát (WRITE_API)
Teraz inicializujte HOG (deskriptor objektov orientovaných na histogram). HOG je jednou z najpopulárnejších techník detekcie objektov a používal sa vo viacerých aplikáciách. cv2.HOGDescriptor_getDefaultPeopleDetector () sa používa na volanie vopred vyškoleného modelu OpenCV na detekciu osôb. HOG sme predtým podrobne vysvetlili v predchádzajúcom tutoriále OpenCV.
hog = cv2.HOGDescriptor () hog.setSVMDetector (cv2.HOGDescriptor_getDefaultPeopleDetector ())
Vo vnútri detektora () Pi prijíma obraz RGB rozdelený do troch farebných kanálov. Potom zmení veľkosť obrázka pomocou imutilov . Potom zavolá metódu detectMultiScale () na analýzu obrazu, aby sa zistilo , či existuje osoba, pomocou výsledku klasifikácie z modelu SVM.
def defector (image): image = imutils.resize (image, width = min (400, image.shape)) clone = image.copy () rects, weights = hog.detectMultiScale (image, winStride = (4, 4), výplň = (8, 8), mierka = 1,05)
Niekedy zachytávanie boxy prekrývajú a vytvárať falošné pozitívne alebo chyby detekcie, takže pod kód sa používa ne-max potlačenie od imutils do výkopom prekrývajúcich sa polí.
pre (x, y, w, h) v rectoch: cv2.rectangle (image, (x, y), (x + w, y + h), (0, 0, 255), 2) rectes = np.array (for (x, y, w, h) in rects]) result = non_max_suppression (rects, probs = None, overlapThresh = 0.7) return result
Vo vnútri funkcie record () získava obraz priamo z kamery Pi metódou VideoCapture () z OpenCV, upravuje jeho veľkosť pomocou programu imultis a výsledky posiela do aplikácie ThingSpeak.
záznam def (sample_time = 5): camera = cv2.VideoCapture (0) frame = imutils.resize (frame, width = min (400, frame.shape)) result = detektor (frame.copy ()) thingspeakHttp = BASE_URL + " & field1 = {} ". format (výsledok1)
Testovanie
Pred spustením skriptu python najskôr skontrolujte, či vaša PI kamera funguje alebo nie. Po skontrolovaní kamery spustite pythonovský skript zadaním nasledujúceho príkazu:
Potom nájdete okno, v ktorom sa nachádza váš video kanál. Pi vezme prvý rámec a spracuje ho pomocou OpenCV na zistenie počtu ľudí. Ak zistí ľudí, nájdete okolo neho políčko takto:
Teraz skontrolujte svoj kanál ThingSpeak, kde môžete sledovať veľkosť davu z ktoréhokoľvek miesta na svete.
Takto môžete pomocou Raspberry Pi počítať davy OpenCV. Pracovné video a kód sú uvedené na konci stránky.