【发布时间】:2017-11-09 16:27:06
【问题描述】:
我正在尝试在 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 行。
有人知道是什么原因造成的吗?
为方便起见编写代码 sn-p(已编辑以在评论中包含一些建议)
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()
【问题讨论】:
-
阅读框后添加
if ret == False: break。 -
感谢您的评论。我确实添加了,但仍然没有解决问题。我试图在循环之后放置一个标志,而程序没有到达那里。好像没有跳出循环..
-
注释掉
cap.release()函数并使用while True: ...。输出是什么? -
它给了我同样的错误。显然在 GitHub for mac 上有一个相关问题:github.com/dthpham/butterflow/issues/12
-
好的,如果我取消注释 cv2.destroyAllWindows() 它似乎停止崩溃。任何想法为什么?
标签: python opencv opencv3.0 opencv-python