我正在使用python opencv,并且无法在Windows 10上禁用自动对焦,自动曝光等。
我正在使用Logitech BRIO 4k网络摄像头。
一切都可以在Ubuntu 18.04上完美运行。使用使用v4l后端的Opencv 3.4.4,我可以成功设置焦点,曝光度和视频分辨率。但是,相同的代码在Windows上不起作用
在我尝试过的Windows上:
用于Python的非正式非官方OpenCV软件包:opencv-contrib-python https://pypi.org/project/opencv-contrib-python/
从具有MSMF,VFW,DSHOW后端的源opencv 3.4.3构建。 使用VFW,我根本无法打开视频捕获
使用MSMF,DSHOW后端从源opencv 4.1构建
在上述每种情况下(VFW后端除外),我都可以使用opencv功能,从网络摄像头读取和显示帧,但不能禁用自动对焦。
我在正式的opencv GitHub存储库https://github.com/opencv/opencv/blob/master/samples/python/video_v4l2.py中使用的代码
我创建视频捕获就像这样指定后端VideoCapture(0 + BACKEND_ID)
,其中BACKEND_ID是从此处获取的
https://docs.opencv.org/3.4.3/d4/d15/group__videoio__flags__base.html
环境变量OPENCV_VIDEOIO_DEBUG=True
确认我使用特定的后端
关于同一主题的问题,没有答案Disable webcam's autofocus in Windows using opencv-python
cap.set( cv.CAP_PROP_SETTINGS, 1 );
在Windows和Linux上均不起作用
由于该代码可在linux上运行,所以我认为问题出在videoio后端。您能否在opencv支持的Windows上建议其他后端或也许是v4l类似物。
答案 0 :(得分:0)
忘了提及,我当时使用的是虚拟盒子,可以在Windows上运行。 如果我直接在Windows计算机上运行相同的代码,一切正常)) 虚拟盒子一定有问题
唯一的区别是焦点值似乎在0-255的范围内。但是在我上面提供的示例代码中,它们在0-100范围内