OpenCV Python断言失败

时间:2017-11-09 16:27:07

标签: python opencv opencv3.0 opencv-python

我试图在macOS 10.12.6上运行opencv-python == 3.3.0.10来从文件中读取并在窗口中显示视频。我已完全复制了此处的代码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 个答案:

答案 0 :(得分:1)

您的问题并不清楚,但看起来您已经特意遇到视频完成播放而不会被打断的情况。我认为的问题是,当您到达cap.release()时,VideoCapture对象已经关闭。我建议在休息时间内将release语句中的if调用放入其中。

我没有时间进行实验,但我通常会遵循这种模式:

reader = cv2.VideoCapture(<stuff>)
while True:
  success, frame = reader.read()
  if not success:
     break

我不必在这些情境中明确地致电release

相关问题