【问题标题】:How do I get VideoCapture to return errors instead of warnings?如何让 VideoCapture 返回错误而不是警告?
【发布时间】:2020-10-16 16:42:11
【问题描述】:

当尝试在 Linux 上实现基本的 try/except 语句以从摄像头获取帧时,我注意到 OpenCV 在摄像头丢失或设备索引错误时不会引发错误;相反,它会打印一个警告。我怎么能抓住这个?

例子:

import cv2

def foo(camera_index):
    try:
        cap = cv2.VideoCapture(camera_index)
    except Exception:
        print("Couldn't open camera at {}".format(camera_index))

在 /dev/video/0 使用正常工作的摄像头运行 foo(1) 将打印:

WARN:0] global /tmp/pip-req-build-kne9u3r2/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video1): can't open camera by index

然后我的异常就没有用了,因为 cv2 永远不会引发适当的异常(但消息文本听起来像是错误)。

【问题讨论】:

    标签: python opencv error-handling video-capture


    【解决方案1】:

    您无法捕捉到这些警告,但您可以使用isOpened() 方法检查VideoCapture 对象是否已成功创建。

    举个例子:

    cap = cv2.VideoCapture(camera_index)
    if not cap.isOpened():
      raise Exception("Couldn't open camera {}".format(camera_index))
    

    在创建VideoCapture 对象后执行此检查是一种常见模式;另一个例子见here

    【讨论】:

    • 太好了,这正是我所需要的。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2014-12-05
    • 2018-12-23
    • 2021-11-24
    • 2017-07-13
    • 2018-03-18
    • 2023-04-01
    相关资源
    最近更新 更多