OpenCV Python Assertion Failed
Я пытаюсь запустить opencv-python==3.3.0.10 на macOS 10.12.6, чтобы прочитать файл и показать видео в окне. Я точно скопировал код отсюда http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html, раздел "Воспроизведение" видео из файла.
Код работает правильно и показывает видео, однако после завершения видео он ломает программу, выдавая следующую ошибку:
Ошибка подтверждения: (ec == 0), разблокировка функции, файл /BuildRoot/Library/Caches/com.apple.xbs/Sources/libcxx/libcxx-307.5/src/mutex.cpp, строка 48.
Кто-нибудь имеет представление о том, что может вызвать это?
Фрагмент кода для вашего удобства (отредактирован для включения некоторых предложений в комментарии)
cap = cv2.VideoCapture('vtest.avi')
while(True):
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
1 ответ
Это не ясно из вашего вопроса, но похоже, что вы определенно сталкиваетесь с ситуацией, когда видео завершается без прерывания воспроизведения. Я думаю, проблема в том, что объект VideoCapture к тому времени уже закрыт cap.release()
, Я бы рекомендовал позвонить release
внутри if
заявление к перерыву.
У меня не было времени на эксперименты, но я обычно следую этой схеме:
reader = cv2.VideoCapture(<stuff>)
while True:
success, frame = reader.read()
if not success:
break
Мне не пришлось звонить release
явно в этих контекстах.