- Komponenter kreves
- Installere OpenCV i Raspberry Pi
- Installere andre nødvendige pakker
- ThingSpeak Setup for People Counting
- Maskinvareoppsett
- Python-programforklaring for People Counter
- Testing av
I dagens verden av banebrytende teknologier vokser digital bildebehandling veldig raskt og blir en viktig del av mange digitale enheter som mobil, sikkerhetskameraer, bærbare datamaskiner, etc.
De vanligste bruksområdene for digital bildebehandling er gjenkjenning av objekter, ansiktsgjenkjenning og personteller. Så i denne opplæringen skal vi bygge en OpenCV publikumstelling ved hjelp av Raspberry Pi og ThingSpeak. Her vil pi-kameramodulen brukes til kontinuerlig å fange rammene, og deretter vil disse rammene bli behandlet med HOG (Histogram Oriented Object descriptor) for å oppdage objektene i bildet. Etter dette vil disse rammene bli sammenlignet med OpenCVs forhåndstrente modell for deteksjon av mennesker. Folkene som teller vises på ThingSpeak-kanalen som kan overvåkes fra hvor som helst i verden.
Komponenter kreves
Maskinvare
- Raspberry Pi 3 (hvilken som helst versjon)
- Pi-kamera
Programvare og elektroniske tjenester
- ThingSpeak
- Python3.0
- OpenCV3.0
Installere OpenCV i Raspberry Pi
Her vil OpenCV-biblioteket brukes til å oppdage publikum. For å installere OpenCV, oppdaterer du først Raspberry Pi.
sudo apt-get oppdatering
Installer deretter de nødvendige avhengighetene for å installere OpenCV på 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
Deretter installerer du OpenCV i Raspberry Pi ved hjelp av kommandoen nedenfor.
pip3 installer opencv-contrib-python == 4.1.0.25
Vi har tidligere brukt OpenCV med Raspberry pi og laget mange veiledninger om det.
- Installere OpenCV på Raspberry Pi ved hjelp av CMake
- Sanntids ansiktsgjenkjenning med Raspberry Pi og OpenCV
- Lisensgjenkjenning ved bruk av Raspberry Pi og OpenCV
Vi har også laget en serie OpenCV-opplæringsprogrammer fra begynnernivå.
Installere andre nødvendige pakker
Før vi programmerer Raspberry Pi for Crowd Counting, la oss installere de andre nødvendige pakkene.
Installere imutils : imutils brukes til å utføre få nødvendige bildebehandlingsfunksjoner som oversettelse, rotasjon, endring av størrelse, skjelettdannelse og visning av Matplotlib-bilder lettere med OpenCV. Så installer imutils ved å bruke kommandoen nedenfor:
pip3 installere imutils
matplotlib : Deretter installerer du matplotlib- biblioteket. Matplotlib er et omfattende bibliotek for å lage statiske, animerte og interaktive visualiseringer i Python.
pip3 installer matplotlib
ThingSpeak Setup for People Counting
ThingSpeak er en veldig populær IoT-plattform, og ved å bruke ThingSpeak-plattformen kan vi overvåke dataene våre via Internett hvor som helst. Det brukes også til å kontrollere systemet over Internett, ved hjelp av kanaler og nettsider levert av ThingSpeak. Vi har tidligere brukt ThingSpeak til å bygge mange IoT-baserte prosjekter.
For å opprette en kanal på ThingSpeak først, må du først registrere deg på ThingSpeak. I tilfelle hvis du allerede har en konto på ThingSpeak, kan du logge på med ID og passord.
Klikk på Syng opp og skriv inn detaljene dine.
Etter dette, bekreft e-post-ID-en din og klikk på fortsett.
Nå, etter pålogging, kan du opprette en ny kanal ved å klikke på “ Ny kanal ” -knappen.
Etter å ha klikket på " Ny kanal", skriv inn navnet og beskrivelsen av dataene du vil laste opp på denne kanalen. Her har vi opprettet ett felt som heter People . Flere felt kan opprettes i henhold til kravene.
Etter dette, klikk på knappen Lagre kanal for å lagre detaljene.
For å sende data til ThingSpeak, skriv inn API-nøkkel og kanal-ID i Python-skript, så kopier API-nøkkel og kanal-ID.
Maskinvareoppsett
Her trenger vi bare Raspberry Pi og Pi-kamera for dette OpenCV menneskelige tellingsprosjektet, og du trenger bare å feste kamerabåndkontakten i kamerasporet gitt i Raspberry pi
Pi-kamera kan brukes til å bygge forskjellige interessante prosjekter som Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System, etc.
Python-programforklaring for People Counter
Komplett pythonkode for dette publikumstelling OpenCV-prosjektet er gitt på slutten av siden. Her forklarer vi de viktige delene av koden for en bedre forklaring.
Så ved starten av koden, importer alle nødvendige biblioteker som skal brukes i dette prosjektet.
importer cv2 importer imutils fra imutils.object_detection importer non_max_suppression importer numpy som np importforespørsler importtid import base64 fra matplotlib importer pyplot som plt fra urllib.forespørsel import urlopen
Etter å ha importert bibliotekene, skriv inn ThingSpeak-kanal-ID-en og skriv en API-nøkkel som du kopierte tidligere.
channel_id = 812060 # PUT CHANNEL ID HERE WRITE_API = 'X5AQ3EGIKMBYW31H' # PUT DIN SKRIFTSNØKKEL HER BASE_URL = "https://api.thingspeak.com/update?api_key= {}". format (WRITE_API)
Initialiser nå HOG (Histogram Oriented Object descriptor). HOG er en av de mest populære teknikkene for gjenkjenning av objekter og har blitt brukt i flere applikasjoner. cv2.HOGDescriptor_getDefaultPeopleDetector () brukes til å kalle en pre-trent modell av OpenCV for deteksjon av mennesker. Vi har tidligere forklart HOG i detalj i forrige OpenCV-opplæring.
hog = cv2.HOGDescriptor () hog.setSVMDetector (cv2.HOGDescriptor_getDefaultPeopleDetector ())
Inne i detektoren () mottar Pi et RGB-bilde delt inn i tre fargekanaler. Etter det endrer det størrelsen på bildet ved hjelp av imutils . Deretter kaller det detectMultiScale () -metoden for å analysere bildet for å vite om en person eksisterer ved å bruke klassifiseringsresultatet fra SVM-modellen.
def detektor (bilde): image = imutils.resize (image, width = min (400, image.shape)) clone = image.copy () rects, vekter = hog.detectMultiScale (image, winStride = (4, 4), polstring = (8, 8), skala = 1.05)
Noen ganger overlapper fangstkassene og genererer falske positive eller gjenkjenningsfeil, så under koden gjelder ikke-maks undertrykkelse fra imutils til kick-off overlappende bokser.
for (x, y, w, h) i opptak: cv2. rektangel (bilde, (x, y), (x + w, y + h), (0, 0, 255), 2) opptak = np.array (for (x, y, w, h) i rects]) resultat = non_max_suppression (rects, probs = None, overlapThresh = 0.7) returresultat
Inne i record () -funksjonen henter den bildet direkte fra Pi-kameraet ved hjelp av VideoCapture () -metoden fra OpenCV, endrer størrelsen på den ved hjelp av imultis og sender resultatene til ThingSpeak.
def record (sample_time = 5): camera = cv2.VideoCapture (0) frame = imutils.resize (frame, width = min (400, frame.shape)) result = detector (frame.copy ()) thingspeakHttp = BASE_URL + " & felt1 = {} ". format (resultat1)
Testing av
Før du starter python-skriptet, må du først sjekke om PI-kameraet ditt fungerer eller ikke. Etter å ha gjennomgått kameraet, start python-skriptet ved å utstede følgende kommando:
Deretter finner du et vindu som dukker opp med videofeeden din. Pi tar den første rammen og behandler den ved hjelp av OpenCV for å oppdage antall mennesker. Hvis den oppdager folket, vil du finne en boks rundt den slik:
Sjekk nå ThingSpeak-kanalen din, hvor du kan overvåke mengden på størrelse fra hvor som helst i verden.
Slik kan du få OpenCV til å telle publikum ved å bruke Raspberry Pi. Arbeidsvideo og kode er gitt på slutten av siden.