Открыть cv u::ошибка mat
Я пытаюсь сделать детектор движения, но в конце концов,когда я привязываюсь, чтобы противостоять boject, он дает мне ошибку типа, я не знаю много об открытом cv, я пытался найти решение в интернете, но не было никакого решения для этого
Этот код выглядит следующим образом:
импорт cv2
д = cv2.Захватить видео(0)
first_frame = нет
пока это правда:
проверьте , кадр = vedio.read()
серый = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
серый = cv2.GaussianBlur(серый,(21,21),0)
если first_frame нет:
first_frame=серый
продолжить
new_frame = cv2.absdiff(first_frame,серый)
thresh_frame = cv2.threshold(new_frame, 30 ,255, cv2.THRESH_BINARY)[1]
thresh_frame = cv2.dilate(thresh_frame,None,итерации = 2)
(__,cnts__,) = cv2.findContours(thresh_frame.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
для контура в (__,УНТ__,):
если cv2.contourArea(контур) < 1000:
продолжить
(x,y,w,h) = cv2.boundingRect(контур)
cv2.прямоугольник(рамка, (x,y), (x + w+ y + h), (0,255,0),3)
cv2.imshow("молотить",thresh_frame)
cv2.imshow("захват",серый)
ключ = cv2.waitKey(1)
if key == ord('g'):
перерыв
печать(а)
видео.релиз()
cv2.destroyAllWindows()
Ошибка, которую я получаю, такова :
Обратная трассировка (самый недавний призыв последнего):
Файл "E:\Python\Python\open cv\vedio.py", строка 30, in <module>
если cv2.contourArea(контур) < 1000:
TypeError: ожидаемое cv::UMat для аргумента 'contour'
[ WARN:0] завершение асинхронного обратного вызова
Что я уже пробовал:
Я попробовал stackoverflow, но правильного ответа на этот вопрос не было..