【问题标题】:Disable webcam's Autofocus in Linux在 Linux 中禁用网络摄像头的自动对焦
【发布时间】:2013-04-25 13:06:19
【问题描述】:

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

【问题讨论】:

    标签: python linux opencv


    【解决方案1】:

    如果有人觉得有用,我想出了一个小sn-p,可以添加到您的.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
    

    这个 sn-p 做了一些假设:

    • 您想在所有具有自动对焦功能的视频设备上禁用自动对焦

    【讨论】:

      【解决方案2】:

      您也可以在 Linux 中使用:

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

      对于某些人来说,这在 Windows 中不起作用(请参阅Disable webcam's autofocus in Windows using opencv-python)。在我的系统中是这样(ubuntu 14.04,V4L 2.0.2,opencv 3.4.3,logitech c922)。

      【讨论】:

        【解决方案3】:

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

        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
        

        【讨论】:

        • 首先,我必须sudo apt-get install v4l-utils。
        • 以防万一其他人感到困惑。包v4l-utils 包的“4”后面有一个小“L”字符,不是“1”!
        猜你喜欢
        • 2018-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多