[英]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.