Member 14068174 Ответов: 2

Открыть 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, но правильного ответа на этот вопрос не было..

2 Ответов

Рейтинг:
2

CPallini

[обновление]

Цитата:
(__,cnts__,) = cv2.findContours(thresh_frame.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

для контура в (__,УНТ__,):
если cv2.contourArea(контур) < 1000:

Я бы написал вместо этого
__,cnts,__ = cv2.findContours(thresh_frame.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

for contour in cnts:
if cv2.contourArea(contour) < 1000:

[/обновление]


Member 14068174

Это дает мне ошибку, что cnts не определен

CPallini

Смотрите, мое обновленное решение.

Рейтинг:
2

Richard MacCutchan

Похоже, что возвращаемые значения из findContours может быть 2 или 3 переменные; см. cv2.findContours пример Python[^]