Я пытаюсь удалить тень с порогом и обнаружить движение на живой камере. вот моя программа:обнаружение с контуром и показать его Ошибка
import cv2
import numpy as np
cam = cv2.VideoCapture(0)
while True:
t=cam.read()[1]
t0=cv2.cvtColor(cam.read()[1],cv2.COLOR_RGB2GRAY)
t1=cv2.cvtColor(cam.read()[1],cv2.COLOR_RGB2GRAY)
t2=cv2.cvtColor(cam.read()[1],cv2.COLOR_RGB2GRAY)
a1=cv2.absdiff(t0,t1)
a2=cv2.absdiff(t1,t2)
b=cv2.bitwise_and(a1,a2)
ret,thresh0=cv2.threshold(b,30,255,cv2.THRESH_BINARY)
thresh1=cv2.bitwise_and(t1,thresh0)
contours,hierarchy=cv2.findContours(thresh0,1,2)
cnt=contours[0]
x,y,w,h=cv2.boundingRect(cnt)
img=cv2.rectangle(t1,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("winName",t1)
cv2.imshow("detect",img)
key=cv2.waitKey(10)
if key==27:
cv2.destroyAllwindow()
break
print "End"
Но возникают следующие ошибки:
in line (cv2.imshow("detect",img)) which stop with this error :
cv2.imshow("thresh",img)
error: /home/rayannik/opencv-2.4.10/modules/highgui/src/window.cpp:261:
error: (-215) size.width>0 && size.height>0 in function imshow
Если мы будем игнорировать эту линию, это будет работать только тогда, когда что-то двигаться всегда на передней части камеры в противном случае остановки с этой ошибкой :
cnt=contours[0]
IndexError: list index out of range