22

我正在使用 beagleboard 的嵌入系统。源代码在 Python 中,但我从 OpenCV 导入库来进行图像处理。实际上,我正在使用网络摄像头 Logitech c910,它是一款出色的相机,但它具有自动对焦功能。我想知道是否可以从 Python 或 Linux 中的任何程序禁用自动对焦?

4

3 回答 3

44

使用v4l2-ctlshell 中的程序来控制网络摄像头上的硬件设置。要关闭自动对焦,只需执行以下操作:

v4l2-ctl -c focus_auto=0

您可以列出所有可能的控件:

v4l2-ctl -l

这些命令默认为您的第一个 Video4Linux 设备,即/dev/video0. 如果您插入了多个网络摄像头,请使用-d开关选择您的目标设备。


安装 v4l-utils

安装该实用程序的最简单方法是使用您的包管理器,例如在 Ubuntu 或其他基于 Debian 的系统上尝试:

apt-get install v4l-utils

或者在 Fedora、CentOS 和其他基于 RPM 的发行版上使用:

yum install v4l-utils
于 2013-05-20T21:12:34.437 回答
0

如果有人觉得有用,我想出了一个小片段,可以添加到您的.bashrc. 它将检测您的哪些网络摄像头具有自动对焦功能,然后将其禁用。

先决条件:v4l-utils

# Get a space-separated list of all the video devices available
webcams=$(ls -pd /dev/* | grep video | tr '\n' ' ')
for webcam in $webcams; do
  # Check if the tested video device features autofocus
  no_autofocus=$(v4l2-ctl --device=$webcam --all | grep focus)
  # If it does, disable it
  if [ -n "${no_autofocus}" ];
  then
      v4l2-ctl --device=$webcam --set-ctrl=focus_auto=0
  fi
done

这个片段做了一些假设:

  • 您想在所有具有它的视频设备上禁用自动对焦
于 2022-01-03T13:04:38.663 回答
0

你也可以在 Linux 中使用:

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_AUTOFOCUS, 0)

对于某些人来说,这在 Windows 中不起作用(请参阅使用 opencv-python 在 Windows 中禁用网络摄像头的自动对焦)。在我的系统中是这样(ubuntu 14.04,V4L 2.0.2,opencv 3.4.3,logitech c922)。

于 2018-10-03T18:28:34.350 回答