You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派用v4l2与fswebcam拍摄时手动摄像头参数不生效问题咨询

解决方案

你遇到的参数不生效核心原因是fswebcam启动时会默认重置罗技C920的V4L2参数,你提前用v4l2-ctl设置的参数会被覆盖,不需要分开调用,直接把参数内嵌到fswebcam命令里即可。

具体修改方案

  • 方案1:直接在fswebcam中嵌入参数(最稳定,适配C920)

    所有摄像头参数用--set参数直接跟在fswebcam命令后,不需要提前调用v4l2-ctl,修改后的脚本如下:
    #!/bin/bash
    DATE=$(date +"%y%m%d%H%M%S")
    SAVE_PATH="/media/networkshare/public/Temp Photo Holder SolidScape Right/"
    
    # 单次设置所有参数+拍摄,自动对焦相关参数需要时取消注释即可
    sudo fswebcam -d /dev/video0 \
    -r 1920x1080 \
    --no-banner \
    --set "focus_auto=false" \
    --set "focus_absolute=35" \
    --set "brightness=128" \
    --set "contrast=128" \
    --set "saturation=128" \
    --set "gain=15" \
    --set "sharpness=128" \
    --set "exposure_auto_priority=1" \
    "${SAVE_PATH}/timelapse_${DATE}_1.jpg"
    
    # 后续拍摄不需要重复设置参数,短时间内参数会保持
    sleep 9
    sudo fswebcam -d /dev/video0 -r 1920x1080 --no-banner "${SAVE_PATH}/timelapse_${DATE}_2.jpg"
    sleep 9
    
    注意:你原来的两次拍摄用了同一个$DATE变量,会导致后拍的照片覆盖前一张,这里给文件名加了后缀区分,不需要的话可以自行调整。
  • 方案2:保留v4l2-ctl调用的适配方法

    如果要保留提前用v4l2-ctl设置的逻辑,需要给fswebcam加--no-controls参数,禁止fswebcam重置摄像头参数:
    # 原来的v4l2-ctl设置部分保留不变
    sudo v4l2-ctl -d /dev/video0 -c brightness=128
    sudo v4l2-ctl -d /dev/video0 -c contrast=128
    # 其余参数设置不变,sleep 2也保留
    sleep 2
    sudo v4l2-ctl -c exposure_auto_priority=1
    
    # 拍摄时加--no-controls参数
    sudo fswebcam -d /dev/video0 -r 1920x1080 --no-banner --no-controls /path/to/save.jpg
    

额外注意事项

  • 罗技C920的手动对焦生效前提是必须先关闭自动对焦,如果你要固定对焦,记得取消脚本里两行对焦参数的注释
  • 测试参数时可以先单独运行v4l2-ctl -d /dev/video0 --list-ctrls确认所有参数的可选值范围,避免设置超出范围的无效值

内容的提问来源于stack exchange,提问作者Mikey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:18:03