我正在使用ELP-USBFHD01M-L21相机。它声称有自动曝光支持,当我将它插入我的Mac时,似乎是这样。我在OS X上下载了一个示例应用程序,有人编写了该应用程序使用USB视频类命令启用/禁用自动曝光,看起来很好。
在Debian 8.5系统上,我使用Python访问v4l2。我在这里设置曝光到手动模式。接受该值(1)和值3:
self._camera = v4l2capture.Video_device(device)
self._frame_size = self._camera.set_format(*requested_frame_size)
# 0: V4L2_EXPOSURE_AUTO
# 1: V4L2_EXPOSURE_MANUAL
# 2: V4L2_EXPOSURE_SHUTTER_PRIORITY
# 3: V4L2_EXPOSURE_APERTURE_PRIORITY
actual = self._camera.set_exposure_auto(1)
如果我尝试将exposure_auto设置为零,则失败并显示:
Traceback (most recent call last):
File "camera.py", line 207, in <module>
camera = Camera('/dev/video0')
File "camera.py", line 45, in __init__
a = self._camera.set_exposure_auto(0)
IOError: [Errno 34] Numerical result out of range
与实用程序类似的结果:
$ v4l2-ctl -c exposure_auto=0
VIDIOC_S_EXT_CTRLS: failed: Numerical result out of range
Error setting controls: Numerical result out of range
$ v4l2-ctl -c exposure_auto=1
如果我使用lsusb -v
检查描述符,我会看到这个(摘录):
VideoControl Interface Descriptor:
bLength 18
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Camera Sensor
bAssocTerminal 0
iTerminal 0
wObjectiveFocalLengthMin 0
wObjectiveFocalLengthMax 0
wOcularFocalLength 0
bControlSize 3
bmControls 0x0000000e
Auto-Exposure Mode
Auto-Exposure Priority
Exposure Time (Absolute)
答案 0 :(得分:0)
我对camera.set_exposure_auto(0)
工作有点担心。事实证明,值为3是手动光圈调整的自动曝光。这款相机没有光圈(至少不是机械光圈),这似乎可以激活一种适合我的自动曝光形式。
值为0是自动曝光以及自动光圈,回想起来为什么不支持此功能是有意义的。
一些documentation here。搜索“曝光”。