我正在按照指南开发运动检测安全源,但遇到了问题。本教程的作者没有问题,但我有。'''完整代码可以在这里找到:https : //github.com/ncorbuk/Python-Motion-Detection-system/blob/master/motion_detection.py '''我已经尝试了添加的选项," for c in cnt or []: " - 这让我进一步运行应用程序,在那里我可以看到相机屏幕,但是一旦检测到运动,应用程序就会崩溃并提供以下 numpy 错误:包含多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()for c in cnt: if (cv2.contourArea(c) > 800): (x, y, w, h) = cv2.boundingRect(c) cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 255, 0), 2) text = 'Occupied' else: pass预期输出(如果您有网络摄像头);当检测到运动时,一个绿色矩形将跟随移动的像素并实时将模式从“未占用”更改为“已占用”;没有错误。
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
在 Opencv4.0 中,findContour()
只返回 2 个值,contours
并且hierachy
. 所以在第 57 行motion_detection.py
你必须改变
cnt = cv2.findContours(dilate_image.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1]
到
cnt = cv2.findContours(dilate_image.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
.
添加回答
举报
0/150
提交
取消