while(cap.isopened())出错:在使用cv2的python中

时间:2014-11-26 11:30:59

标签: 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

1 个答案:

答案 0 :(得分:2)

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

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

我认为这应该可以解决这个问题。