猿问

如何修复 OpenCV Numpy 错误,对象不可迭代

我正在按照指南开发运动检测安全源,但遇到了问题。本教程的作者没有问题,但我有。


'''完整代码可以在这里找到: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

预期输出(如果您有网络摄像头);当检测到运动时,一个绿色矩形将跟随移动的像素并实时将模式从“未占用”更改为“已占用”;没有错误。


斯蒂芬大帝
浏览 158回答 1
1回答

PIPIONE

在 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].
随时随地看视频慕课网APP

相关分类

Python
我要回答