python - while (cap.isopened()) 错误 : in python using cv2

标签 python opencv

有很多使用的例子

while (cap.isopened()):

循环播放一段视频,但我发现它总是在最后一帧出现错误。我目前正在使用它

while (cap.get(1) < cap.get(7)):

但是我需要做些什么才能使第一种方法起作用而不出错吗?

我只是在 while 循环中做正常的事情;示例如下:

while (cap.get(1) < cap.get(7)): #(cap.isOpened()):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'): 
        break

最佳答案

第一种方法很可能会失败,因为您在视频结束后读取一帧(因此得到一个空白帧),然后尝试对该空白帧执行不允许的操作。您可以添加一个检查以查看您得到的框架是否为空白:

    while(cap.isOpened()):
        ret, frame = cap.read()
        if frame is None:
            break

我相信这应该可以解决问题。

关于python - while (cap.isopened()) 错误 : in python using cv2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148047/

相关文章:

opencv_traincascade 总是卡住

c++ - 以有效的方式选择符号,在算术代码算法中,C++

python - 当个人拥有多个地址时,如何为 Dedupe 制作地名词典?

python - 在 PyQt 中设置 QGraphicsTextItem 来源

python-3.x - OpenCV 代码打开视频,但显示被阻止的摄像头

c++ - 网格引擎集群+OpenCV : strange behaviour

python - 我找不到解决方法detectMultiScale()错误

python - 由于 errno : 150 "Foreign key constraint is incorrectly formed",Django 1.8 应用程序初始迁移神秘失败

Python:试图折叠第二个参数的函数映射

python - Pandas DF - 测量频率,附加到适当的行并按 max(freq) 标准化