- Kinakailangan ang Mga Bahagi
- Pag-install ng OpenCV sa Raspberry Pi
- Pag-install ng iba pang Mga Kinakailangan na Pakete
- ThingSpeak Setup para sa Nagbibilang ng Tao
- Pag-setup ng Hardware
- Paliwanag ng Programa ng Python para sa Counter ng Mga Tao
- Pagsubok sa
Sa panahon ngayon ng mga teknolohiyang may katamtaman, ang Pagproseso ng Digital na Larawan ay lumalaki nang napakabilis at naging isang mahalagang bahagi ng maraming mga digital na aparato tulad ng mobile, security camera, laptop, atbp.
Ang pinakakaraniwang mga application ng Digital Image Processing ay ang pagtuklas ng object, Pagkilala sa Mukha, at counter ng mga tao. Kaya sa tutorial na ito, magtatayo kami ng isang bilang ng karamihan sa OpenCV gamit ang Raspberry Pi at ThingSpeak. Dito gagamitin ang module ng pi camera para sa patuloy na pagkuha ng mga frame at pagkatapos ay iproproseso ang mga frame na ito gamit ang HOG (Histogram oriented Object deskriptor) upang makita ang mga bagay sa imahe. Pagkatapos nito, ihahambing ang mga frame na ito sa pre-sinanay na modelo ng OpenCV para sa pagtuklas ng mga tao. Ang mga taong nagbibilang ay ipapakita sa ThingSpeak channel na maaaring subaybayan mula sa kahit saan sa mundo.
Kinakailangan ang Mga Bahagi
Hardware
- Raspberry Pi 3 (anumang bersyon)
- Pi Camera
Software at Mga Serbisyong Online
- ThingSpeak
- Python3.0
- OpenCV3.0
Pag-install ng OpenCV sa Raspberry Pi
Dito gagamitin ang OpenCV library upang makita ang karamihan ng tao. Upang mai-install ang OpenCV, una, i-update ang Raspberry Pi.
sudo apt-get update
Pagkatapos i-install ang kinakailangang mga dependency para sa pag-install ng OpenCV sa iyong 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
Pagkatapos nito, i-install ang OpenCV sa Raspberry Pi gamit ang command sa ibaba.
pip3 i-install ang opencv-contrib-python == 4.1.0.25
Ginamit namin dati ang OpenCV kasama ang Raspberry pi at lumikha ng maraming mga tutorial dito.
- Pag-install ng OpenCV sa Raspberry Pi gamit ang CMake
- Pagkilala sa Real-Time na Mukha kasama ang Raspberry Pi at OpenCV
- Pagkilala sa Plate ng Lisensya gamit ang Raspberry Pi at OpenCV
Lumikha din kami ng isang serye ng mga tutorial ng OpenCV na nagsisimula sa antas ng nagsisimula.
Pag-install ng iba pang Mga Kinakailangan na Pakete
Bago iprograma ang Raspberry Pi para sa Crowd Counting, i-install natin ang iba pang mga kinakailangang package.
Pag-install ng mga imutil : ang mga imutil ay ginagamit upang maisagawa ang ilang mga kinakailangang pag-andar ng pagproseso ng imahe tulad ng pagsasalin, pag-ikot, pagbabago ng laki, pagbubuo ng balangkas, at pagpapakita ng mga imahe ng Matplotlib na mas madali sa OpenCV. Kaya i-install ang mga imutil gamit ang utos sa ibaba:
pip3 i-install ang mga imutil
matplotlib : Pagkatapos nito, i-install ang matplotlib library. Ang Matplotlib ay isang komprehensibong library para sa paglikha ng mga static, animated, at interactive na visualization sa Python.
pip3 i-install ang matplotlib
ThingSpeak Setup para sa Nagbibilang ng Tao
Ang ThingSpeak ay isang tanyag na IoT platform at sa pamamagitan ng paggamit ng ThingSpeak platform, masusubaybayan namin ang aming data sa Internet mula saanman. Ginagamit din ito upang makontrol ang system sa Internet, gamit ang Mga Channel at webpage na ibinigay ng ThingSpeak. Ginamit namin dati ang ThingSpeak upang makabuo ng maraming mga proyekto na nakabatay sa IoT.
Upang lumikha muna ng isang channel sa ThingSpeak, unang Mag-sign up sa ThingSpeak. Kung sakaling mayroon ka nang account sa ThingSpeak, mag-sign in gamit ang iyong id at password.
Mag-click sa Sing up at ipasok ang iyong mga detalye.
Pagkatapos nito, i-verify ang iyong E-mail id at mag-click sa magpatuloy.
Ngayon, pagkatapos ng pag-login, lumikha ng isang bagong channel sa pamamagitan ng pag-click sa pindutang " Bagong Channel ".
Pagkatapos ng pag-click sa " Bagong Channel," ipasok ang Pangalan at Paglalarawan ng data na nais mong i-upload sa channel na ito. Nilikha namin ang isang patlang na pinangalanang People . Maaaring malikha ang maraming mga patlang ayon sa mga kinakailangan.
Pagkatapos nito, mag-click sa pindutan ng i-save ang channel upang mai-save ang mga detalye.
Upang magpadala ng data sa ThingSpeak, ipasok ang key ng API at channel ID sa script ng Python, kaya kopyahin ang API key at channel ID.
Pag-setup ng Hardware
Dito kakailanganin lamang namin ang Raspberry Pi at Pi camera para sa proyekto ng pagbibilang ng tao na OpenCV at kailangan mo lamang i-attach ang konektor ng ribbon ng camera sa puwang ng camera na ibinigay sa Raspberry pi
Maaaring magamit ang Pi camera upang makabuo ng iba't ibang mga kagiliw-giliw na proyekto tulad ng Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System, atbp.
Paliwanag ng Programa ng Python para sa Counter ng Mga Tao
Kumpletuhin ang python code para sa karamihan ng tao na binibilang ang proyekto ng OpenCV ay ibinigay sa dulo ng pahina. Narito ipinapaliwanag namin ang mga mahahalagang seksyon ng code para sa isang mas mahusay na paliwanag.
Kaya't sa pagsisimula ng code, i-import ang lahat ng kinakailangang mga aklatan na gagamitin sa proyektong ito.
i-import ang mga cv2 na imutil mula sa imutils.object_detection import non_max_suppression import numpy bilang np humiling ng import time import base64 mula sa matplotlib import pyplot bilang plt mula sa urllib.request import urlopen
Matapos ang pag-import ng mga aklatan, ipasok ang ThingSpeak channel ID at Sumulat ng isang API key na kinopya mo kanina.
channel_id = 812060 # PUT CHANNEL ID DITO WRITE_API = 'X5AQ3EGIKMBYW31H' # Ilagay ANG IYONG SUSULAT NG SUSI DITO BASE_URL = "https://api.thingspeak.com/update?api_key= {}". format (WRITE_API)
Ngayon, simulan ang HOG (Histogram oriented Object deskriptor). Ang HOG ay isa sa mga pinakatanyag na diskarte para sa pagtuklas ng object at ginamit sa maraming mga application. cv2.HOGDescriptor_getDefaultPeopleDetector () na tumawag sa isang paunang sinanay na modelo ng OpenCV para sa pagtuklas ng mga tao. Nauna naming ipinaliwanag ang HOG nang detalyado sa nakaraang tutorial sa OpenCV.
hog = cv2.HOGDescriptor () hog.setSVMDetector (cv2.HOGDescriptor_getDefaultPeopleDetector ())
Sa loob ng detector (), tumatanggap si Pi ng isang RGB na imahe na nahahati sa tatlong mga channel ng kulay. Pagkatapos nito, binabago nito ang laki ng imahe gamit ang mga imutil . Pagkatapos ay tinatawagan nito ang pamamaraan ng pagtuklasMultiScale () upang pag-aralan ang imahe upang malaman kung ang isang tao ay umiiral gamit ang resulta ng pag-uuri mula sa modelo ng SVM.
def detector (imahe): image = imutils.resize (imahe, lapad = min (400, image.shape)) clone = image.copy () rects, weights = hog.detectMultiScale (image, winStride = (4, 4), padding = (8, 8), scale = 1.05)
Minsan ang mga capture-box ay nagsasapawan at bumuo ng mga maling positibo o pagkakamali sa pagtuklas, kaya sa ibaba ang code ay naglalapat ng hindi pagpigil na pagpigil mula sa mga imutil hanggang sa mga kick-off na overlap na kahon.
para sa (x, y, w, h) sa rects: cv2.rectangle (imahe, (x, y), (x + w, y + h), (0, 0, 255), 2) rects = np.array (para sa (x, y, w, h) sa rects]) resulta = non_max_suppression (rects, probs = Wala, overlapThresh = 0.7) resulta ng pagbabalik
Sa loob ng pag- andar ng record () , kinukuha nito ang imahe nang direkta mula sa Pi camera gamit ang pamamaraang VideoCapture () mula sa OpenCV, pinalitan ang laki nito gamit ang imultis at ipinapadala ang mga resulta sa ThingSpeak.
def record (sample_time = 5): camera = cv2.VideoCapture (0) frame = imutils.resize (frame, width = min (400, frame.shape)) resulta = detector (frame.copy ()) bagaypeakHttp = BASE_URL + " & field1 = {} ". format (resulta1)
Pagsubok sa
Bago ilunsad ang script ng sawa, una, suriin kung gumagana ang iyong PI camera o hindi. Pagkatapos suriin ang camera, ilunsad ang script ng sawa sa pamamagitan ng pag-isyu ng sumusunod na utos:
Pagkatapos ay makakakita ka ng isang window na popping up sa iyong video feed dito. Kukunin ni Pi ang unang frame at iproseso ito gamit ang OpenCV upang makita ang bilang ng mga tao. Kung nakita nito ang mga tao, makakakita ka ng isang kahon sa paligid nito tulad nito:
Ngayon suriin ang iyong ThingSpeak channel, kung saan maaari mong subaybayan ang laki ng karamihan ng tao mula sa kahit saan sa mundo.
Ito ay kung paano mo magagawa ang pagbibilang ng OpenCV crowd gamit ang Raspberry Pi. Ang gumaganang video at code ay ibinibigay sa dulo ng pahina.