- ส่วนประกอบที่จำเป็น
- การติดตั้ง OpenCV ใน Raspberry Pi
- การติดตั้งแพ็คเกจอื่น ๆ ที่จำเป็น
- การตั้งค่า ThingSpeak สำหรับการนับจำนวนคน
- การตั้งค่าฮาร์ดแวร์
- คำอธิบายโปรแกรม Python สำหรับ People Counter
- การทดสอบไฟล์
ในโลกแห่งเทคโนโลยีล้ำสมัยในปัจจุบันการประมวลผลภาพดิจิทัลเติบโตอย่างรวดเร็วและกลายเป็นส่วนสำคัญของอุปกรณ์ดิจิทัลจำนวนมากเช่นมือถือกล้องรักษาความปลอดภัยแล็ปท็อปเป็นต้น
แอพพลิเคชั่นที่พบบ่อยที่สุดของ Digital Image Processing ได้แก่ การตรวจจับวัตถุการจดจำใบหน้าและตัวนับคน ดังนั้นในการกวดวิชานี้เราจะไปสร้างนับ OpenCV ฝูงชนโดยใช้ราสเบอร์รี่ Pi และ ThingSpeak ที่นี่โมดูลกล้อง pi จะใช้สำหรับการจับภาพเฟรมอย่างต่อเนื่องจากนั้นเฟรมเหล่านี้จะถูกประมวลผลด้วย HOG (Histogram Oriented Object descriptor) เพื่อตรวจจับวัตถุในภาพ หลังจากนี้เฟรมเหล่านี้จะถูกเปรียบเทียบกับโมเดลที่ฝึกไว้ล่วงหน้าของ OpenCV สำหรับการตรวจจับคน การนับจำนวนคนจะแสดงบนช่อง ThingSpeak ซึ่งสามารถตรวจสอบได้จากทุกที่ในโลก
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์
- Raspberry Pi 3 (ทุกรุ่น)
- พี่กล้อง
ซอฟต์แวร์และบริการออนไลน์
- ThingSpeak
- Python3.0
- OpenCV3.0
การติดตั้ง OpenCV ใน Raspberry Pi
ที่นี่จะใช้ไลบรารี OpenCV เพื่อตรวจจับฝูงชน ในการติดตั้ง OpenCV ก่อนอื่นให้อัปเดต Raspberry Pi
อัปเดต sudo apt-get
จากนั้นติดตั้งการอ้างอิงที่จำเป็นสำหรับการติดตั้ง OpenCV บน 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 - sudo apt-get install libqt4-test –y
หลังจากนั้นให้ติดตั้ง OpenCV ใน Raspberry Pi โดยใช้คำสั่งด้านล่าง
pip3 ติดตั้ง opencv-Contrib-python == 4.1.0.25
ก่อนหน้านี้เราเคยใช้ OpenCV กับ Raspberry pi และสร้างบทเรียนมากมาย
- การติดตั้ง OpenCV บน Raspberry Pi โดยใช้ CMake
- การจดจำใบหน้าแบบเรียลไทม์ด้วย Raspberry Pi และ OpenCV
- การจดจำป้ายทะเบียนโดยใช้ Raspberry Pi และ OpenCV
นอกจากนี้เรายังได้สร้างชุดบทเรียน OpenCV โดยเริ่มตั้งแต่ระดับเริ่มต้น
การติดตั้งแพ็คเกจอื่น ๆ ที่จำเป็น
ก่อนที่จะตั้งโปรแกรม Raspberry Pi สำหรับ Crowd Counting ให้ติดตั้งแพ็คเกจอื่น ๆ ที่จำเป็น
การติดตั้ง imutils : imutils ใช้เพื่อเรียกใช้ฟังก์ชันการประมวลผลภาพที่จำเป็นไม่กี่อย่างเช่นการแปลการหมุนการปรับขนาดโครงกระดูกและการแสดงภาพ Matplotlib ง่ายขึ้นด้วย OpenCV ดังนั้นติดตั้ง imutils โดยใช้คำสั่งด้านล่าง:
pip3 ติดตั้ง imutils
matplotlib : หลังจากนั้นให้ติดตั้งไลบรารี matplotlib Matplotlib เป็นไลบรารีที่ครอบคลุมสำหรับการสร้างภาพเคลื่อนไหวเคลื่อนไหวและโต้ตอบใน Python
pip3 ติดตั้ง matplotlib
การตั้งค่า ThingSpeak สำหรับการนับจำนวนคน
ThingSpeak เป็นแพลตฟอร์ม IoT ที่ได้รับความนิยมอย่างมากและด้วยการใช้แพลตฟอร์ม ThingSpeak เราสามารถตรวจสอบข้อมูลของเราทางอินเทอร์เน็ตได้จากทุกที่ นอกจากนี้ยังใช้เพื่อควบคุมระบบผ่านอินเทอร์เน็ตโดยใช้ช่องทางและหน้าเว็บที่จัดทำโดย ThingSpeak ก่อนหน้านี้เราใช้ ThingSpeak เพื่อสร้างโครงการที่ใช้ IoT มากมาย
ในการสร้างช่องบน ThingSpeak ก่อนอื่นให้ลงชื่อสมัครใช้ ThingSpeak ก่อน ในกรณีที่คุณมีบัญชีใน ThingSpeak อยู่แล้วให้ลงชื่อเข้าใช้ด้วยรหัสและรหัสผ่านของคุณ
คลิกที่ Sing up และป้อนรายละเอียดของคุณ
หลังจากนี้ตรวจสอบรหัสอีเมลของคุณแล้วคลิกดำเนินการต่อ
ตอนนี้หลังจากเข้าสู่ระบบสร้างช่องใหม่โดยคลิกปุ่ม " ช่องใหม่ "
หลังจากคลิกที่ " ช่องใหม่" ให้ป้อนชื่อและคำอธิบายของข้อมูลที่คุณต้องการอัปโหลดในช่องนี้ ที่นี่เราได้สร้างหนึ่งฟิลด์ชื่อคน สามารถสร้างฟิลด์ได้หลายช่องตามความต้องการ
หลังจากนี้ให้คลิกที่ปุ่มบันทึกช่องเพื่อบันทึกรายละเอียด
ในการส่งข้อมูลไปยัง ThingSpeak ให้ป้อนคีย์ API และรหัสแชนเนลในสคริปต์ Python ดังนั้นให้คัดลอกคีย์ API และรหัสแชนเนล
การตั้งค่าฮาร์ดแวร์
ที่นี่เราต้องการเฉพาะกล้อง Raspberry Pi และ Pi สำหรับโครงการการนับจำนวนมนุษย์ OpenCV นี้และคุณเพียงแค่ต้องเชื่อมต่อขั้วต่อริบบิ้นกล้องในช่องกล้องที่ให้ไว้ใน Raspberry pi
กล้อง Piสามารถใช้เพื่อสร้างโครงการที่น่าสนใจต่างๆเช่น Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System เป็นต้น
คำอธิบายโปรแกรม Python สำหรับ People Counter
รหัสหลามที่สมบูรณ์สำหรับโครงการ OpenCV ที่นับฝูงชนนี้จะได้รับที่ท้ายหน้า ที่นี่เรากำลังอธิบายส่วนสำคัญของโค้ดเพื่อคำอธิบายที่ดีขึ้น
ดังนั้นเมื่อเริ่มต้นรหัสให้นำเข้าไลบรารีที่จำเป็นทั้งหมดที่จะใช้ในโครงการนี้
import cv2 imutils อิมพอร์ตจาก imutils.object_detection import non_max_suppression import numpy เป็น np import time import base64 จาก matplotlib import pyplot เป็น plt จาก urllib.request import urlopen
หลังจากนำเข้าไลบรารีให้ป้อนรหัสแชนเนล ThingSpeak และเขียนคีย์ API ที่คุณคัดลอกไว้ก่อนหน้านี้
channel_id = 812060 # ใส่รหัสช่องที่นี่ WRITE_API = 'X5AQ3EGIKMBYW31H' # ใส่คีย์การเขียนของคุณที่นี่ BASE_URL = "https://api.thingspeak.com/update?api_key= {}". รูปแบบ (WRITE_API)
ตอนนี้เริ่มต้น HOG (Histogram Oriented Object descriptor) HOG เป็นหนึ่งในเทคนิคยอดนิยมสำหรับการตรวจจับวัตถุและถูกนำไปใช้ในหลาย ๆ แอปพลิเคชัน cv2.HOGDescriptor_getDefaultPeopleDetector () ใช้เพื่อเรียกโมเดล OpenCV ที่ได้รับการฝึกฝนมาก่อนสำหรับการตรวจจับบุคคล ก่อนหน้านี้เราได้อธิบายรายละเอียด HOG ในบทช่วยสอน OpenCV ก่อนหน้านี้
หมู = cv2.HOGDescriptor () hog.setSVMDetector (cv2.HOGDescriptor_getDefaultPeopleDetector ())
ภายใน เครื่องตรวจจับ () Pi ได้รับภาพ RGB ที่แบ่งออกเป็นสามช่องสี หลังจากที่มันปรับขนาดภาพโดยใช้imutils จากนั้นจะเรียก เมธอด detectMultiScale () เพื่อวิเคราะห์ภาพเพื่อทราบว่ามีบุคคลอยู่หรือไม่โดยใช้ผลการจำแนกประเภทจากแบบจำลอง SVM
เครื่องตรวจจับข้อบกพร่อง (ภาพ): image = imutils.resize (รูปภาพ, width = min (400, image.shape)) clone = image.copy () rects, weights = hog.detectMultiScale (image, winStride = (4, 4), padding = (8, 8), ขนาด = 1.05)
บางครั้งกล่องจับภาพซ้อนทับกันและสร้างผลบวกปลอมหรือข้อผิดพลาดในการตรวจจับดังนั้นโค้ดด้านล่างจึงใช้การปราบปรามแบบไม่สูงสุดจาก imutils ไปจนถึงกล่องที่ซ้อนทับ
สำหรับ (x, y, w, h) ในรูปสี่เหลี่ยมผืนผ้า: cv2.rectangle (รูปภาพ, (x, y), (x + w, y + h), (0, 0, 255), 2) rects = np.array (สำหรับ (x, y, w, h) ใน rects]) ผลลัพธ์ = non_max_suppression (rects, probs = None, overlapThresh = 0.7) ส่งคืนผลลัพธ์
ภายในฟังก์ชั่น record () จะดึงภาพโดยตรงจากกล้อง Pi โดยใช้วิธี VideoCapture () จาก OpenCV ปรับขนาดโดยใช้ imultis และส่งผลลัพธ์ไปยัง ThingSpeak
บันทึก def (sample_time = 5): camera = cv2.VideoCapture (0) frame = imutils.resize (frame, width = min (400, frame.shape)) ผลลัพธ์ = ตัวตรวจจับ (frame.copy ()) thingspeakHttp = BASE_URL + " & field1 = {} ". format (result1)
การทดสอบไฟล์
ก่อนที่จะเรียกใช้สคริปต์ python ก่อนอื่นให้ตรวจสอบว่ากล้อง PI ของคุณใช้งานได้หรือไม่ หลังจากตรวจสอบกล้องแล้วให้เปิดสคริปต์ python โดยใช้คำสั่งต่อไปนี้:
จากนั้นคุณจะพบหน้าต่างโผล่ขึ้นมาพร้อมกับฟีดวิดีโอของคุณ Pi จะใช้เฟรมแรกและประมวลผลโดยใช้ OpenCV เพื่อตรวจจับจำนวนคน หากตรวจพบผู้คนคุณจะพบกล่องรอบ ๆ ดังนี้:
ตรวจสอบช่อง ThingSpeak ของคุณซึ่งคุณสามารถตรวจสอบขนาดฝูงชนได้จากทุกที่ในโลก
นี่คือวิธีที่คุณสามารถทำให้การนับฝูงชน OpenCV ใช้ Raspberry Pi วิดีโอที่ใช้งานได้และรหัสจะได้รับที่ส่วนท้ายของหน้า