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

我正在使用OpenCV 3.1和

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

我想要改变的具体属性是absolute_exposure.

我可以通过终端使用v4l2 API手动更改它,使用命令v4l2-ctl –set-ctrl exposure_absolute = 40,它运行良好,但我需要为此任务编写脚本.

使用OpenCV的集合(cv2.CAP_PROP_EXPOSURE,20)会导致“VIDEOIO ERROR:V4L:属性暴露(15)不受设备支持”.我确定网络摄像头支持更改此属性,因为可以使用v4l2这样做,然后我认为问题在于OpenCV的包装器.

我还尝试使用子进程lib发送终端命令并使用v4l2更改属性.该命令是subprocess.call(‘v4l2-ctl –device = / dev / video0 –set-ctrl exposure_absolute = 20’,shell = True).

结果是exposure_absolute更改但它不适用于我当前的视频捕获.图1显示了通过脚本设置属性后的结果.图2显示了通过终端设置相同属性后的结果,同一视频捕获处于活动状态.

在图像1之后立即拍摄图像2,突出显示的线与图像1相同.

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

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

__________________________________________________

编辑:我可能找到了解决此问题的方法.子进程调用确实是正确的,我只需要在更改属性之前使用cv2.read()一次,显然第一个cv2.read()是重置相机属性的地方.我仍然不知道如何阻止它自动重置网络摄像头的属性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值