我正在按照指南開發運動檢測安全源,但遇到了問題。本教程的作者沒有問題,但我有。'''完整代碼可以在這里找到: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
提交
取消