如何让 VideoCapture 返回错误而不是警告?

问题描述 投票:0回答:1

当尝试在 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

我的 except 就没用了,因为 cv2 永远不会引发正确的异常(但消息文本听起来像是一个错误)。

python opencv error-handling video-capture
1个回答
2
投票

您无法捕获这些警告,但您可以使用

isOpened()
方法检查 VideoCapture 对象是否已成功创建。

举个例子:

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

创建

VideoCapture
对象后执行此检查是一种常见模式;请参阅此处了解另一个示例。

© www.soinside.com 2019 - 2024. All rights reserved.