简体   繁体   English

是否可以在Windows 10上禁用网络摄像头的自动对焦?

[英]Is it possible to disable autofocus of a webcam on Windows 10?

I am working with python opencv and I am not able to disable autofocus, autoexposure etc on windows 10. 我正在使用python opencv,并且无法在Windows 10上禁用自动对焦,自动曝光等功能。

I am using Logitech BRIO 4k webcam. 我正在使用Logitech BRIO 4k网络摄像头。

Everything works perfectly on Ubuntu 18.04. 一切都能在Ubuntu 18.04上完美运行。 With Opencv 3.4.4 using v4l backend I am able to set focus, exposure, video resolution successfully. 使用使用v4l后端的Opencv 3.4.4,我可以成功设置焦点,曝光度和视频分辨率。 However the same code doesn't work on windows 但是相同的代码在Windows上不起作用

on windows I have tried: 在Windows上,我尝试过:

  1. Unofficial pre-built OpenCV packages for Python: opencv-contrib-python https://pypi.org/project/opencv-contrib-python/ 适用于Python的非正式非官方OpenCV软件包:opencv-contrib-python https://pypi.org/project/opencv-contrib-python/

  2. build from source opencv 3.4.3 with MSMF, VFW, DSHOW backends. 使用MSMF,VFW,DSHOW后端从源opencv 3.4.3构建。 With VFW I am not able to open video capture at all 使用VFW,我根本无法打开视频捕获

  3. build from source opencv 4.1 with MSMF, DSHOW backends 使用MSMF,DSHOW后端从源opencv 4.1构建

in every case above (except VFW backend) I am able to use opencv functionality, read and show frames from a webcam, but not able to disable autofocus. 在上述每种情况下(VFW后端除外),我都可以使用opencv功能,从网络摄像头读取和显示帧,但不能禁用自动对焦。

code that I use from official opencv GitHub repo https://github.com/opencv/opencv/blob/master/samples/python/video_v4l2.py 我从官方opencv GitHub存储库中使用的代码https://github.com/opencv/opencv/blob/master/samples/python/video_v4l2.py

I create video capture like so to specify backend VideoCapture(0 + BACKEND_ID) where BACKEND_ID is taken from here https://docs.opencv.org/3.4.3/d4/d15/group__videoio__flags__base.html 我像这样创建视频捕获,以指定后端VideoCapture(0 + BACKEND_ID) ,其中从此处获取BACKEND_ID https://docs.opencv.org/3.4.3/d4/d15/group__videoio__flags__base.html

Environmental variable OPENCV_VIDEOIO_DEBUG=True confirms that I use particular backend 环境变量OPENCV_VIDEOIO_DEBUG=True确认我使用了特定的后端

Questions on the same topic without answers Disable webcam's autofocus in Windows using opencv-python 相同主题的问题没有答案在Windows中使用opencv-python禁用网络摄像头的自动对焦

cap.set( cv.CAP_PROP_SETTINGS, 1 ); doesn't work on both windows and linux 在Windows和Linux上均不起作用

Since the code works on linux I believe that the problem is in the videoio backend. 由于代码可以在linux上运行,因此我认为问题出在videoio后端。 Can you suggest some other backend or maybe v4l analog on windows that opencv supports. 您可以在opencv支持的Windows上建议其他后端或v4l模拟吗?

Forgot to mention, I was using virtual box to run on windows. 忘了提,我当时使用虚拟盒在Windows上运行。 If I run the same code on windows machine directly everything works)) Must be some problem with virtual box 如果我直接在Windows机器上运行相同的代码,则一切正常))虚拟框一定存在问题

The only difference is that focus values seem to be in range 0-255. 唯一的区别是焦点值似乎在0-255的范围内。 But in the sample code I provided above they are in 0-100 range 但在我上面提供的示例代码中,它们的范围是0-100

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM