- Componente necesare
- Instalarea OpenCV în Raspberry Pi
- Instalarea altor pachete necesare
- Configurare ThingSpeak pentru numărarea persoanelor
- Configurare hardware
- Explicația programului Python pentru Counter People
- Testarea
În lumea actuală a tehnologiilor de vârf, Procesarea digitală a imaginilor crește foarte repede și devine o parte importantă a multor dispozitive digitale, cum ar fi dispozitivele mobile, camerele de securitate, laptopurile etc.
Cele mai frecvente aplicații de procesare digitală a imaginilor sunt detectarea obiectelor, recunoașterea feței și contorul de persoane. Deci, în acest tutorial, vom construi o mulțime OpenCV numărând folosind Raspberry Pi și ThingSpeak. Aici modulul camerei pi va fi utilizat pentru capturarea continuă a cadrelor și apoi aceste cadre vor fi procesate cu HOG (Histogram Oriented Object descriptor) pentru a detecta obiectele din imagine. După aceasta, aceste cadre vor fi comparate cu modelul pre-instruit OpenCV pentru detectarea persoanelor. Numărul de persoane va fi afișat pe canalul ThingSpeak, care poate fi monitorizat de oriunde din lume.
Componente necesare
Hardware
- Raspberry Pi 3 (orice versiune)
- Camera Pi
Software și servicii online
- ThingSpeak
- Python3.0
- OpenCV3.0
Instalarea OpenCV în Raspberry Pi
Aici biblioteca OpenCV va fi utilizată pentru a detecta mulțimea. Pentru a instala OpenCV, mai întâi, actualizați Raspberry Pi.
sudo apt-get update
Apoi instalați dependențele necesare pentru instalarea OpenCV pe 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 install libqt4-test –y
După aceea, instalați OpenCV în Raspberry Pi folosind comanda de mai jos.
pip3 instalează opencv-contrib-python == 4.1.0.25
Am folosit anterior OpenCV cu Raspberry pi și am creat o mulțime de tutoriale pe el.
- Instalarea OpenCV pe Raspberry Pi folosind CMake
- Recunoaștere a feței în timp real cu Raspberry Pi și OpenCV
- Recunoașterea plăcuței de înmatriculare utilizând Raspberry Pi și OpenCV
De asemenea, am creat o serie de tutoriale OpenCV începând de la nivelul pentru începători.
Instalarea altor pachete necesare
Înainte de a programa Raspberry Pi pentru Crowd Counting, să instalăm celelalte pachete necesare.
Instalarea imutils : imutils este utilizat pentru a executa câteva funcții necesare de procesare a imaginilor, cum ar fi traducerea, rotația, redimensionarea, scheletizarea și afișarea mai ușoară a imaginilor Matplotlib cu OpenCV. Deci, instalați imutils folosind comanda de mai jos:
pip3 instalează imutils
matplotlib : După aceea, instalațibiblioteca matplotlib. Matplotlib este o bibliotecă cuprinzătoare pentru crearea de vizualizări statice, animate și interactive în Python.
pip3 instalează matplotlib
Configurare ThingSpeak pentru numărarea persoanelor
ThingSpeak este o platformă IoT foarte populară și prin utilizarea platformei ThingSpeak, ne putem monitoriza datele de pe internet de oriunde. De asemenea, este utilizat pentru a controla sistemul prin Internet, utilizând canalele și paginile web furnizate de ThingSpeak. Am folosit anterior ThingSpeak pentru a construi multe proiecte bazate pe IoT.
Pentru a crea mai întâi un canal pe ThingSpeak, mai întâi Înscrieți-vă pe ThingSpeak. În cazul în care aveți deja un cont pe ThingSpeak, conectați-vă folosind ID-ul și parola.
Faceți clic pe Sing up și introduceți detaliile dvs.
După aceasta, verificați-vă ID-ul de e-mail și faceți clic pe continuare.
Acum, după autentificare, creați un nou canal făcând clic pe butonul „ Canal nou ”.
După ce faceți clic pe „ Canal nou ” , introduceți numele și descrierea datelor pe care doriți să le încărcați pe acest canal. Aici am creat un câmp numit Oameni . Mai multe câmpuri pot fi create în funcție de cerințe.
După aceasta, faceți clic pe butonul de salvare a canalului pentru a salva detaliile.
Pentru a trimite date către ThingSpeak, introduceți cheia API și ID-ul canalului în scriptul Python, deci copiați cheia API și ID-ul canalului.
Configurare hardware
Aici avem nevoie doar de camera Raspberry Pi și Pi pentru acest proiect de numărare umană OpenCV și trebuie doar să atașați conectorul panglicii camerei în slotul camerei furnizat în Raspberry pi
Camera Pi poate fi utilizată pentru a construi diverse proiecte interesante, cum ar fi camera de supraveghere Raspberry Pi, sistemul de monitorizare a vizitatorilor, sistemul de securitate la domiciliu etc.
Explicația programului Python pentru Counter People
Codul complet Python pentru acest proiect OpenCV de numărare a mulțimii este dat la sfârșitul paginii. Aici explicăm secțiunile importante ale codului pentru o explicație mai bună.
Deci, la începutul codului, importați toate bibliotecile necesare care vor fi utilizate în acest proiect.
import cv2 import imutils from imutils.object_detection import non_max_suppression import numpy as np solicită import import timp base64 din matplotlib import pyplot ca plt din urllib.request import urlopen
După importarea bibliotecilor, introduceți ID-ul canalului ThingSpeak și scrieți o cheie API pe care ați copiat-o mai devreme.
channel_id = 812060 # PUT CHANNEL ID AICI WRITE_API = 'X5AQ3EGIKMBYW31H' # PUSE YOUR WRITE KEY AICI BASE_URL = "https://api.thingspeak.com/update?api_key= {}". format (WRITE_API)
Acum, inițializați HOG (Histogram Oriented Object descriptor). HOG este una dintre cele mai populare tehnici de detectare a obiectelor și a fost utilizat în mai multe aplicații. cv2.HOGDescriptor_getDefaultPeopleDetector () folosit pentru a apela un model pre-instruit de OpenCV pentru detectarea persoanelor. Am explicat anterior HOG în detaliu în tutorialul OpenCV anterior.
hog = cv2.HOGDescriptor () hog.setSVMDetector (cv2.HOGDescriptor_getDefaultPeopleDetector ())
În interiorul detectorului (), Pi primește o imagine RGB împărțită în trei canale color. După aceasta, redimensionează imaginea folosind imutile . Apoi, apelează metoda detectMultiScale () pentru a analiza imaginea pentru a ști dacă există o persoană folosind rezultatul clasificării din modelul SVM.
detector def (imagine): image = imutils.resize (image, width = min (400, image.shape)) clone = image.copy () rects, weights = hog.detectMultiScale (image, winStride = (4, 4), umplutură = (8, 8), scară = 1,05)
Uneori, casetele de captură se suprapun și generează falsuri pozitive sau erori de detectare, astfel încât codul de mai jos aplică suprimarea non-maximă de la imutile la casetele suprapuse.
pentru (x, y, w, h) în recte: cv2.rectangle (image, (x, y), (x + w, y + h), (0, 0, 255), 2) rects = np.array (pentru (x, y, w, h) în recte]) result = non_max_suppression (rects, probs = None, overlapThresh = 0.7) rezultat de returnare
În interiorul funcției record () , recuperează imaginea direct de pe camera Pi utilizând metoda VideoCapture () din OpenCV, o redimensionează folosind imultis și trimite rezultatele la ThingSpeak.
înregistrare def (sample_time = 5): camera = cv2.VideoCapture (0) frame = imutils.resize (frame, width = min (400, frame.shape)) result = detector (frame.copy ()) thingspeakHttp = BASE_URL + " & field1 = {} ". format (rezultat1)
Testarea
Înainte de a lansa scriptul python, verificați mai întâi dacă camera dvs. PI funcționează sau nu. După examinarea camerei, lansați scriptul python prin lansarea următoarei comenzi:
Apoi veți găsi o fereastră care apare cu feedul video în ea. Pi va lua primul cadru și îl va procesa folosind OpenCV pentru a detecta numărul de persoane. Dacă detectează oamenii, veți găsi o cutie în jurul ei astfel:
Acum verificați canalul ThingSpeak, unde puteți monitoriza dimensiunea mulțimii de oriunde din lume.
Acesta este modul în care puteți face OpenCV numărarea mulțimii folosind Raspberry Pi. Video și cod de lucru sunt furnizate la sfârșitul paginii.