สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ระบบนี้ใช้ pizero, wifi dongle และเว็บแคมเก่าในกล่องไม้ขีดไฟที่ปรับแต่งได้ มันบันทึกวิดีโอการตรวจจับการเคลื่อนไหวที่ 27fps ของการเคลื่อนไหวที่สำคัญบนถนนรถแล่นของฉัน จากนั้นจะอัปโหลดคลิปไปยังบัญชีดรอปบ็อกซ์ นอกจากนี้ยังสามารถดูบันทึกและเปลี่ยนการกำหนดค่าผ่านดรอปบ็อกซ์
ขั้นตอนที่ 1: การตั้งค่าข้อกำหนดเบื้องต้น
ขั้นแรกให้อัปเดตระบบปฏิบัติการเป็นเวอร์ชันล่าสุดตามที่อธิบายไว้ที่นี่
จากนั้นตั้งค่า wifi ตามที่อธิบายไว้ที่นี่
จากนั้นคุณจะต้องตั้งค่า OpenCv มีคำแนะนำที่ดีเกี่ยวกับวิธีการทำเช่นนี้ใน pyimagesearch หากคุณกำลังจะใช้เวอร์ชัน 3.0 คาดว่าจะใช้เวลานาน ขั้นตอนหนึ่งใช้เวลา 9 ชั่วโมงในการทำ คุณจะต้องมีการเชื่อมโยงหลามซึ่งอธิบายไว้ในหน้านั้น
เมื่อคุณเตรียมข้อมูลทั้งหมดนี้แล้ว คุณก็พร้อมที่จะดาวน์โหลดซอฟต์แวร์ตรวจจับการเคลื่อนไหว
ขั้นตอนที่ 2: การตั้งค่าซอฟต์แวร์ตรวจจับการเคลื่อนไหว
รหัสสามารถพบได้บน bitbucket คัดลอกไฟล์เหล่านี้โดยใช้
โคลน git
หรือหากคุณต้องการดาวน์โหลดทีละรายการ
ส่วนหลักของระบบนี้คือ multiMotionDetect.py ใช้คิวและเหตุการณ์หลายการประมวลผลจำนวนมาก
ก่อนอื่น คุณต้องตัดสินใจว่าคุณต้องการเก็บภาพวิดีโอไว้ที่ไหน MotionVideos และตั้งค่านี้ในไฟล์ globalConfig.json จากนั้นคัดลอก config.json.txt และ maskedAreas.json.txt ไปที่รูทของโฟลเดอร์นี้ config.json.txt มีการตั้งค่าต่อไปนี้ซึ่งสามารถแก้ไขได้จากระยะไกล
{ "frameThreshold": "4", "staticThreshold": "100", "min_area":"650", "postSeconds":"7", "readCamNice": "-6", "checkMotionNice":"5", "writeCamNice": "5", "ขนาดสูงสุด": "6"
}
FrameThreshold: คือจำนวนเฟรมที่มีนัยสำคัญก่อนที่จะตรวจพบการเคลื่อนไหว
staticThreshold: คือจำนวนเฟรมคงที่ก่อนที่เราจะปิดการถ่ายทำ
minArea: คือขนาดต่ำสุดของพื้นที่เพื่อนับเป็นนัยสำคัญ
postSeconds: นี่คือจำนวนวินาทีนับจากสิ้นสุดการถ่ายทำเพื่อให้การเคลื่อนไหวผ่านคิว readCamNice: นี่คือลำดับความสำคัญที่จะให้ความสำคัญกับ
กระบวนการ readCam ซึ่งอยู่ระหว่าง -20 ถึง +20 (ตัวเลขยิ่งต่ำยิ่งมีลำดับความสำคัญสูง) แต่อย่าหักโหมจนเกินไป มิฉะนั้น ระบบปฏิบัติการจะขัดข้อง
checkMotionNice: ลำดับความสำคัญสำหรับกระบวนการตรวจจับการเคลื่อนไหว
writeCamNice: ลำดับความสำคัญของกระบวนการเขียนกล้อง
maxqsize: นี่คือจำนวนวินาทีที่คูณด้วยเฟรมต่อวินาที
ส่วนใหญ่ฉันจะเปลี่ยนเฉพาะ min_area เพื่อพิจารณาสภาพลมเท่านั้น
หากคุณต้องการใช้ตัวบันทึกธรรมดามากกว่าตัวบันทึกซ็อกเก็ต (ด้านล่าง) ให้เปลี่ยนการนำเข้า miaLogging เป็น
นำเข้าการบันทึก
logging.basicConfig(filename='example.log', level=logging. DEBUG)
และลบตัวรับบันทึกออกจากไฟล์ motionDetect และทุกอย่างจะทำงานได้ดี
หากคุณต้องการเรียกใช้การตรวจจับการเคลื่อนไหวโดยอัตโนมัติเมื่อเริ่มต้น
ก่อนอื่นให้แก้ไขสคริปต์และตรวจสอบว่า homedir ชี้ไปยังตำแหน่งที่คุณมี multiMotionDetect.py จากนั้นคัดลอกไฟล์ motionDetect ไปที่ /etc/init.d เช่น
cp motionDetect /etc/init.d/motionDetect
น่าจะใช้งานได้แล้ว แต่
chmod +x /etc/init.d/motionDetect
สุดท้ายลงทะเบียนสคริปต์กับ
sudo update-rc.d motionDetect defaults
คุณยังสามารถเริ่ม หยุด และรีสตาร์ทระบบด้วย
sudo /etc/init.d/motionDetect เริ่ม|หยุด|เริ่มใหม่
โดยค่าเริ่มต้น การบันทึกซ็อกเก็ต miaLogReceiver จะเริ่มต้นพร้อมกัน อีกสามโปรแกรมเป็นอิสระ แต่ใช้ซ็อกเก็ตล็อกเกอร์เดียวกัน (แต่สามารถแปลงได้ง่าย) ฉันเรียกสิ่งเหล่านี้โดยใช้สคริปต์ cron ที่มีช่วงเวลาต่างกัน ดูคำแนะนำได้ที่นี่
CheckRunning.py ตรวจสอบว่า multiMotionDetect.py กำลังทำงานอยู่และจะรีสตาร์ทหรือไม่ ถ้าไม่
fileMaint.py ดำเนินการดูแลทำความสะอาดในโฟลเดอร์วิดีโอเพื่อลบสิ่งเหล่านี้หลังจากผ่านไปตามจำนวนวันที่กำหนด จะลบไดเรกทอรีย่อยของโฟลเดอร์วิดีโอเคลื่อนไหวที่ตั้งไว้ในย่อหน้าแรก จะตรวจสอบว่ามันขึ้นต้นด้วย "MV" ดังนั้นตรวจสอบให้แน่ใจว่าคุณไม่มีไดเร็กทอรีสำคัญอื่นที่ขึ้นต้นด้วยอักขระเดียวกันภายในโฟลเดอร์นั้น
ขั้นตอนที่ 3: การเข้าถึงวิดีโอและการกำหนดค่าผ่าน Dropbox
สุดท้าย หากคุณต้องการดูวิดีโอ บันทึก และไฟล์กำหนดค่าจากระยะไกล คุณจะต้องตั้งค่าดรอปบ็อกซ์
ขั้นแรกให้รับบัญชีดรอปบ็อกซ์ซึ่งฟรี จากนั้นตั้งค่า API สำหรับ python -https://www.dropbox.com/developers/documentation/… ซึ่งรวมถึงการดาวน์โหลด sdk และการลงทะเบียนแอปเพื่อเข้าถึง API
เมื่อคุณมีคีย์แล้ว ให้ป้อนสิ่งนั้นในไฟล์ globalConfig.json ข้อมูลเพิ่มเติมเกี่ยวกับระบบสามารถพบได้ในบล็อกของฉัน dani cymru - cyber renegade หากคุณพบสิ่งที่น่าสนใจหรือคำถามใด ๆ โปรดแสดงความคิดเห็นในบล็อก