使用默认的自动曝光模式捕获图像时:
$ v4l2-ctl -d0 --set-fmt-video=width=width,height=height,pixelformat=MJPG --stream-mmap --stream-to=auto_expo.jpg --stream-count=1
auto_expo.jpg显示:
但在使用手动曝光捕捉图像时,使用尽可能最短的曝光值4:
$ v4l2-ctl -d0 -c exposure_auto=1
$ v4l2-ctl -d0 -c exposure_absolute=4
$ v4l2-ctl -d0 --set-fmt-video=width=width,height=height,pixelformat=MJPG --stream-mmap --stream-to=manual_expo.jpg --stream-count=1
manual_expo.jpg显示
V4L2值之前:
$ v4l2-ctl -d0 --list-ctrls
brightness 0x00980900 (int) : min=0 max=15 step=1 default=8 value=8
contrast 0x00980901 (int) : min=0 max=15 step=1 default=8 value=8
saturation 0x00980902 (int) : min=0 max=15 step=1 default=7 value=7
hue 0x00980903 (int) : min=-10 max=10 step=1 default=0 value=0
white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
gamma 0x00980910 (int) : min=1 max=10 step=1 default=7 value=7
gain 0x00980913 (int) : min=0 max=0 step=0 default=0 value=0
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2
white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1 default=2800 value=2800 flags=inactive
sharpness 0x0098091b (int) : min=0 max=15 step=1 default=6 value=6
backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=0 value=0
exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=3
exposure_absolute 0x009a0902 (int) : min=4 max=5000 step=1 default=625 value=625 flags=inactive
focus_absolute 0x009a090a (int) : min=0 max=21 step=1 default=16 value=16 flags=inactive
focus_auto 0x009a090c (bool) : default=1 value=1
V4L2值在以下之后:
$ v4l2-ctl -d0 --list-ctrls
brightness 0x00980900 (int) : min=0 max=15 step=1 default=8 value=8
contrast 0x00980901 (int) : min=0 max=15 step=1 default=8 value=8
saturation 0x00980902 (int) : min=0 max=15 step=1 default=7 value=7
hue 0x00980903 (int) : min=-10 max=10 step=1 default=0 value=0
white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
gamma 0x00980910 (int) : min=1 max=10 step=1 default=7 value=7
gain 0x00980913 (int) : min=0 max=0 step=0 default=0 value=0
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2
white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1 default=2800 value=2800 flags=inactive
sharpness 0x0098091b (int) : min=0 max=15 step=1 default=6 value=6
backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=0 value=0
exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=1
exposure_absolute 0x009a0902 (int) : min=4 max=5000 step=1 default=625 value=4
focus_absolute 0x009a090a (int) : min=0 max=21 step=1 default=16 value=16 flags=inactive
focus_auto 0x009a090c (bool) : default=1 value=1
发布于 2022-06-03 08:15:09
exposure_absolute 0x009a0902 (int) : min=4 max=5000 step=1 default=625 value=4
这表明,从1/4秒到1/5000秒的曝光是可用的。你实际上选择了最长的(4=>¼)曝光,而不是最短的曝光。
发布于 2023-03-26 17:12:57
相机有OV5640芯片吗?我可以在Linux系统上使用这样的摄像头芯片准确地再现您描述的行为。
奇怪的是:在使用AForge.Video.DirectShow
的Windows系统上,同一台相机根本没有设置亮度的问题。
由于v4l2-ctl
get/set曝光属性与其他相机工作得很好,根本原因似乎是OV5640芯片的v4l2-ctl
实现问题,不知何故,min/max范围可能搞砸了。
https://unix.stackexchange.com/questions/704837
复制相似问题