如何使用V4L2(v4l2-ctl)为树莓派相机设置固定曝光拍摄照片
树莓派4+HQ摄像头v4l2固定参数亮度波动问题解决方案
核心原因
仅关闭曝光和ISO的自动开关没有覆盖所有自动调整逻辑,树莓派ISP、摄像头模组还有其他默认开启的自动处理规则,同时参数设置后未等待生效就直接拍摄也会导致配置不生效。
具体解决步骤
- 第一步:关闭所有自动调整参数,手动固定全部图像处理配置
除你已经设置的参数外,额外执行以下命令:
可根据自身拍摄需求调整白平衡、亮度、对比度等参数的具体数值,只要保持固定即可。# 关闭自动白平衡,手动固定白平衡值 v4l2-ctl -c white_balance_auto_preset=0 v4l2-ctl -c red_balance=1500 v4l2-ctl -c blue_balance=1500 # 关闭自动增益 v4l2-ctl -c auto_gain=0 # 关闭动态帧率,避免曝光不足时自动降帧提亮 v4l2-ctl -c exposure_dynamic_framerate=0 # 手动固定ISP基础参数,避免隐式自动调整 v4l2-ctl -c brightness=0 v4l2-ctl -c contrast=32 v4l2-ctl -c saturation=32 v4l2-ctl -c gamma=100 - 第二步:设置参数后丢弃未生效帧再拍摄
v4l2参数下发到摄像头模组存在延迟,前几帧仍然会使用旧的自动参数,设置完所有参数后先执行空采命令丢弃无效帧:
再执行原本的拍摄命令即可。v4l2-ctl --stream-mmap=3 --stream-count=5 --stream-to=/dev/null - 第三步:确认曝光参数取值合法
执行v4l2-ctl --list-ctrls | grep exposure_time_absolute查看曝光参数的取值范围,树莓派HQ摄像头的该参数单位为100微秒,设置的数值不可超过当前帧率对应的最大曝光上限(例如帧率为2fps时最大曝光为500ms,对应参数值最大为5000),否则参数会被系统自动截断导致曝光异常。
内容的提问来源于stack exchange,提问作者smcs
相关产品推荐
相关产品推荐

