Python OpenCV:capture.read返回true,尽管相机已拔下插头

时间:2014-12-12 08:37:28

标签: python opencv

我有相机,我在python中使用cv2模块。一切正常,也许除了我想要错误代码或成功/失败返回而不是打印到stderr。

我有循环读取图像及其返回。

while True:
    ret, img = capture.read()
    print ret
    ........
    time.sleep(0.033)

根据OpenCV的文档,它应该在失败时返回False。虽然它有效,但没关系。当我拔下网络摄像头时(为了模拟'某些故障),这会产生很多输出" VIDIOC_DQBUF:没有这样的设备",但是ret仍然是True。这是一个错误,网络摄像头或操作系统特定的行为吗?这有什么变通方法吗? (而不是在python中重定向stderr并检查那里的内容)

1 个答案:

答案 0 :(得分:1)

是的,它应该在失败时返回False,但似乎它在你的情况下不能可靠地工作。我可以建议一个解决方法。我假设当拔掉网络摄像头时,返回的图像全部为零。您也可以与返回的标志一起检查它。

while True:
    ret, img = capture.read()
    print ret and (not img.any())
    ........
    time.sleep(0.033)