【问题标题】:v4l2 manual exposure not working compared to Windows 10与 Windows 10 相比,v4l2 手动曝光不起作用
【发布时间】:2021-01-06 11:59:41
【问题描述】:

这个问题和V4L2 absolute exposure setting has (almost) not effect很像

我有一个UVC 兼容相机,我在Raspberry Pi CM3+ 模块上运行。它显示为video0
使用工具/驱动程序v4l2-ctlqv4l2guvcview 无法控制absolute exposure,但在Windows 10 上使用Amcap 时可以控制。

相机有两种曝光模式manualaperature controlled。在aperature controlled 时,图像中的曝光级别会动态变化,但是,当切换到manual 模式时,图像会变得非常暗,并且无论在可选择范围的上限还是下限都不会改变。

当运行v4l2-ctl 时,范围min 被声明为5max2500。然而,在 Windows 中,它介于 -2-11 之间,并且图像的曝光按您预期的比例变化。

参数范围从v4l2:

exposure_auto 0x009a0901 (menu)       : min=0 max=3 default=3 value=1
exposure_absolute 0x009a0902 (int)    : min=5 max=2500 step=1 default=156 value=1659

Windows 10 上的参数范围为Amcap

如果我这样做v4l2-ctl -d0 -all,这就是我得到的:


pi@raspberrypi:~ $ v4l2-ctl -d0 --all
Driver Info:
        Driver name      : uvcvideo
        Card type        : HD USB CAMERA: HD USB CAMERA
        Bus info         : usb-0000:01:00.0-1.3
        Driver version   : 5.4.79
        Capabilities     : 0x84a00001
                Video Capture
                Metadata Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : uvcvideo
        Model            : HD USB CAMERA: HD USB CAMERA
        Serial           : 01.00.00
        Bus info         : usb-0000:01:00.0-1.3
        Media version    : 5.4.79
        Hardware revision: 0x00000224 (548)
        Driver version   : 5.4.79
Interface Info:
        ID               : 0x03000002
        Type             : V4L Video
Entity Info:
        ID               : 0x00000001 (1)
        Name             : HD USB CAMERA: HD USB CAMERA
        Function         : V4L2 I/O
        Flags         : default
        Pad 0x01000007   : 0: Sink
          Link 0x02000013: from remote pad 0x100000a of entity 'Extension 4': Data, Enabled, Immutable
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
        Width/Height      : 640/480
        Pixel Format      : 'YUYV' (YUYV 4:2:2)
        Field             : None
        Bytes per Line    : 1280
        Size Image        : 614400
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Limited Range)
        Flags             :
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 640, Height 480
        Default     : Left 0, Top 0, Width 640, Height 480
        Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 30.000 (30/1)
        Read buffers     : 0
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=-6
                       contrast 0x00980901 (int)    : min=0 max=95 step=1 default=1 value=6
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=52 value=22
                            hue 0x00980903 (int)    : min=-2000 max=2000 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=0
                          gamma 0x00980910 (int)    : min=100 max=300 step=1 default=115 value=115
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600
                      sharpness 0x0098091b (int)    : min=0 max=7 step=1 default=0 value=0
         backlight_compensation 0x0098091c (int)    : min=36 max=160 step=1 default=54 value=36
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=1
              exposure_absolute 0x009a0902 (int)    : min=5 max=2500 step=1 default=156 value=1659
error 22 getting ext_ctrl Pan (Absolute)
error 22 getting ext_ctrl Tilt (Absolute)
                 focus_absolute 0x009a090a (int)    : min=0 max=1023 step=1 default=0 value=355
                     focus_auto 0x009a090c (bool)   : default=1 value=0
error 22 getting ext_ctrl Zoom, Absolute

我已尝试更改 MJPEGYUYV 之间的格式,没有任何更改。

我假设这是驱动程序问题或我忽略的某些设置?

【问题讨论】:

  • 不确定为什么 guvcview 不起作用。至于您在 Linux 和 Windows 上看到的绝对时间值的差异,这是因为 Windows 将其显示为 2^n 秒 (ref) 其中 n -2 到 -11 在您的情况下,如果您进行计算,您将看看它们是否与您在 Linux 上看到的设置相匹配。
  • @dhanushka - 谢谢你的链接,虽然我不确定如何计算?你认为 Linux 在它的范围内有我所缺少的最佳点吗?
  • @dhanushka - 请参阅下面的答案。我确信您能够为我的发现添加一些数学意义?
  • 我的意思是,您可以从 Windows 值计算 Linux 的绝对曝光时间,如下所示:假设您在 Windows 上设置 -4.5。 Linux上对应的值为(2^-4.5)*(10^6)us。

标签: camera raspbian v4l2 webcam-capture uvc


【解决方案1】:

在我的例子中,Amcap (Windows) 有 5 个离散的曝光级别 [-6,-5,-4,-3,-2]

Linux(guvcviewv4l2)具有从 [5 to 2500] 开始的连续范围(可以在使用 v4l2-ctl 的 OP 中看到。

我已在 Amcap 中手动设置曝光级别,然后使用 Linux (guvcview) 读取它们:
[-6 = 156; -5 = 312; -4 = 625; -3 = 1250; -2 = 2500]

当我将exposure 设置为这些级别中的任何一个时,它会按预期工作。 但是如果我设置任何其他值,例如 2499 或 157,只要少一位数,我就会得到几乎全黑!

我确信有一些数学上的原因会表明这一点,但是,我发现这具有误导性,因为 Linux 驱动程序报告了一个连续范围,这表明曝光范围是线性的,但它不是并且是离散的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多