小编Hél*_*cha的帖子

如何更改 OpenCV 不支持但 v4l2 API 支持的网络摄像头属性?

我正在使用OpenCV 3.1Python 2.7从我的网络摄像头Logitech C270捕获视频帧。我也在使用video4linux2(v4l2)来设置我的相机的属性,但这导致了一些问题。我的操作系统是Ubuntu 15.04

我要更改的特定属性是absolute_exposure

我可以通过终端使用v4l2 API手动更改它,使用命令v4l2-ctl --set-ctrl exposure_absolute=40,它工作得很好,但我需要为此任务编写脚本。

使用 OpenCVset(cv2.CAP_PROP_EXPOSURE, 20)会导致“VIDEOIO ERROR: V4L: Property Exposure(15) not supported by device”。我确定网络摄像头支持更改此属性,因为可以使用 v4l2 这样做,然后我假设问题出在 OpenCV 的包装器上。

我还试图用LIB发送终端命令,并使用更改属性V4L2。命令是subprocess.call('v4l2-ctl --device=/dev/video0 --set-ctrl exposure_absolute=20', shell=True).

结果是 Exposure_absolute 发生了变化,但它不适用于我当前的视频捕获。图 1 显示了通过脚本设置属性后的结果。图 2 显示了通过终端设置相同属性后的结果,相同的视频捕获处于活动状态。

通过脚本设置exposure_absolute(图1)

通过终端设置exposure_absolute(图2)

图 2 是在图 1 之后拍摄的,突出显示的线与图 1 相同。

我在子流程调用上做错了什么吗?或者如何使用脚本更改此属性?

另外,为什么要cv2.VideoCapture(id)重置相机属性,在运行脚本之前更改它们是没有用的,是否可以停止?

__________________________________________________

编辑:我可能找到了解决此问题的方法。子进程调用确实是正确的,我只需要cv2.read()在更改属性之前使用一次,显然第一个 …

python opencv subprocess v4l2 ubuntu-15.04

5
推荐指数
1
解决办法
4934
查看次数

标签 统计

opencv ×1

python ×1

subprocess ×1

ubuntu-15.04 ×1

v4l2 ×1