Luk*_*kas 6 video webcam capture logitech
我想定期从 Logitech C910 网络摄像头捕获图像。问题是,拍摄一张照片后,相机会重置焦点,导致下一张照片无法对焦。
我用来v4l2-ctl
设置焦点。
$v4l2-ctl --device=/dev/video1 --set-ctrl=focus_auto=0
$v4l2-ctl --device=/dev/video1 --set-ctrl=focus_absolute=119
Run Code Online (Sandbox Code Playgroud)
这是我的自动捕获脚本。
#!/bin/bash
while true; do
ffmpeg -f v4l2 -i /dev/video1 -vframes 1 $(date '+%Y%m%d%H%M%S')
sleep 60
done
Run Code Online (Sandbox Code Playgroud)
我尝试使用fswebcam
andstreamer
代替,但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
Run Code Online (Sandbox Code Playgroud)
将焦点设置为 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
Run Code Online (Sandbox Code Playgroud)
...这是我当前的工作脚本,每 60 秒保存一次从网络摄像头捕获的聚焦图像。但是,每次拍摄时,相机中的镜头都会移动,机械装置甚至会发出奇怪的咔哒声。由于我想用它来制作每天数千张照片的长时间延时拍摄,我可以想象这会导致相机随着时间的推移而过度磨损。所以我仍在寻找不同的方法来做到这一点。注意:当我不执行重新对焦部分时,不会出现咔嗒声。
由于每次相机停止拍摄(并且相机 LED 关闭)时都会发生焦点重置。如何保持相机流打开并定期保存该流中的图片?还有其他方法可以尝试阻止相机在流结束后重置焦点吗?
// 我希望我没有把问题问得太广泛。
归档时间: |
|
查看次数: |
5008 次 |
最近记录: |