2

我正在使用 python opencv,但无法在 Windows 10 上禁用自动对焦、自动​​曝光等。

我正在使用罗技 BRIO 4k 网络摄像头。

一切都在 Ubuntu 18.04 上完美运行。通过使用 v4l 后端的 Opencv 3.4.4,我能够成功设置焦点、曝光和视频分辨率。但是相同的代码在 Windows 上不起作用

在我尝试过的 Windows 上:

  1. 用于 Python 的非官方预构建 OpenCV 包:opencv-contrib-python https://pypi.org/project/opencv-contrib-python/

  2. 从带有 MSMF、VFW、DSHOW 后端的源代码 opencv 3.4.3 构建。使用 VFW,我根本无法打开视频捕获

  3. 使用 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 确认我使用特定的后端

相同主题的问题没有答案使用 opencv-python 在 Windows 中禁用网络摄像头的自动对焦

cap.set( cv.CAP_PROP_SETTINGS, 1 ); 不适用于 windows 和 linux

由于代码适用于 linux,我相信问题出在 videoio 后端。您能否在 opencv 支持的 Windows 上建议一些其他后端或 v4l 模拟。

4

1 回答 1

0

忘了说,我是用虚拟盒子在windows上运行的。如果我直接在 Windows 机器上运行相同的代码,一切正常))虚拟框一定有问题

唯一的区别是焦点值似乎在 0-255 范围内。但在我上面提供的示例代码中,它们在 0-100 范围内

于 2019-04-10T09:36:53.183 回答