罗技网络摄像头 - 焦点重置

罗技网络摄像头 - 焦点重置

我想间歇性地从 Logitech C910 网络摄像头捕获图像。问题是,拍摄一张照片后,相机重置焦点,导致下次拍摄时无法对焦。

我正在使用v4l2-ctl它来设置焦点。

$v4l2-ctl --device=/dev/video1 --set-ctrl=focus_auto=0
$v4l2-ctl --device=/dev/video1 --set-ctrl=focus_absolute=119

这是我的自动捕获脚本。

#!/bin/bash
while true; do
  ffmpeg -f v4l2 -i /dev/video1 -vframes 1 $(date '+%Y%m%d%H%M%S')
  sleep 60
done

我尝试使用fswebcamstreamer代替 ,ffmpeg结果相同。每次拍摄时焦点都会重置。

播放网络摄像头的视频时,$mpv /dev/video1播放器关闭后也会重置焦点。

使用 检查当前值时,第一次和第二次拍摄后v4l2-ctl --list-ctrls的值保持不变。但第二次拍摄的输出不清晰。focus_absolute

$v4l2-ctl -d /dev/video1 --list-ctrls
...
focus_absolute 0x009a090a (int) : min=0 max=255 step=17 default=68 value=119
focus_auto 0x009a090c (bool)    : default=1 value=0

将焦距设置为 119,拍摄第一张照片,再次将焦距设置为 119,然后拍摄第二张照片,也会导致第二张照片失焦。但是,如果我在拍摄第一张照片后将焦距更改为其他值,然后再返回 119,则两张照片都会对焦。

#!/bin/bash
# Set Manual Focus
v4l2-ctl --device=/dev/video1 --set-ctrl=focus_auto=0
# Infinite Loop
while true; do
  # Reset Focus
  v4l2-ctl --device=/dev/video1 --set-ctrl=focus_absolute=136
  v4l2-ctl --device=/dev/video1 --set-ctrl=focus_absolute=119
  # Save Image
  ffmpeg -f v4l2 -i /dev/video1 -vframes 1 $(date '+%Y%m%d%H%M%S')
  # Wait
  sleep 60
done

...这是我当前的工作脚本,每 60 秒保存一次从我的网络摄像头捕获的聚焦图像。每次拍摄时,相机中的镜头都会移动,机械装置甚至会发出奇怪的咔嗒声。因为我想用它制作每天拍摄数千张的长延时摄影,我可以想象这会导致相机随着时间的推移过度磨损。所以我仍在寻找不同的方法来做到这一点。注意:当我不进行重新对焦部分时,不会出现咔嗒声。

由于每次相机停止拍摄(并且相机 LED 关闭)时都会重置焦点。我如何才能保持相机流打开并间歇性地保存此流中的图片?还有其他方法可以尝试阻止相机在流结束后重置焦点吗?

// 我希望我没有把这个问题问得太广泛。

相关内容