簡體   English   中英

在 Linux 中禁用網絡攝像頭的自動對焦

[英]Disable webcam's Autofocus in Linux

我正在使用 beagleboard 的嵌入系統。 源代碼在 Python 中,但我從 OpenCV 導入庫來進行圖像處理。 實際上,我正在使用網絡攝像頭 Logitech c910,它是一款出色的相機,但它具有自動對焦功能。 我想知道是否可以從 Python 或 Linux 中的任何程序禁用自動對焦?

使用 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

你也可以在 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)。

萬一有人覺得有用,我想出了一個可以添加到您的.bashrc的小片段。 它將檢測您的哪些網絡攝像頭具有自動對焦功能並將其禁用。 我將它與具有缺陷自動對焦系統的 Microsoft LifeCam HD-6000 一起使用。

先決條件: 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

這個片段做了一些假設:

  • 您想在所有具有它的視頻設備上禁用自動對焦

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM