1.11. 摄像头控制参考

摄像头类包含用于设备的机械(或等效数字)功能的控件,例如可控镜头或传感器。

1.11.1. 摄像头控制 ID

V4L2_CID_CAMERA_CLASS (类)

摄像头类描述符。对此控制调用 ioctls VIDIOC_QUERYCTRL、VIDIOC_QUERY_EXT_CTRL 和 VIDIOC_QUERYMENU 将返回对此控制类的描述。

V4L2_CID_EXPOSURE_AUTO

(枚举)

enum v4l2_exposure_auto_type -

启用曝光时间和/或光圈的自动调整。在启用这些功能时,手动更改曝光时间或光圈的效果是未定义的,驱动程序应忽略此类请求。可能的值有

V4L2_EXPOSURE_AUTO

自动曝光时间,自动光圈。

V4L2_EXPOSURE_MANUAL

手动曝光时间,手动光圈。

V4L2_EXPOSURE_SHUTTER_PRIORITY

手动曝光时间,自动光圈。

V4L2_EXPOSURE_APERTURE_PRIORITY

自动曝光时间,手动光圈。

V4L2_CID_EXPOSURE_ABSOLUTE (整数)

确定摄像头传感器的曝光时间。曝光时间受帧间隔限制。驱动程序应将这些值解释为 100 µs 单位,其中值 1 表示 1/10000 秒,10000 表示 1 秒,100000 表示 10 秒。

V4L2_CID_EXPOSURE_AUTO_PRIORITY (布尔值)

V4L2_CID_EXPOSURE_AUTO 设置为 AUTOAPERTURE_PRIORITY 时,此控制确定设备是否可以动态地更改帧速率。默认情况下,此功能禁用 (0) 并且帧速率必须保持恒定。

V4L2_CID_AUTO_EXPOSURE_BIAS (整数 菜单)

确定自动曝光补偿,仅当 V4L2_CID_EXPOSURE_AUTO 控制设置为 AUTOSHUTTER_PRIORITYAPERTURE_PRIORITY 时才有效。它以 EV 表示,驱动程序应将这些值解释为 0.001 EV 单位,其中值 1000 表示 +1 EV。

增加曝光补偿值等效于减小曝光值 (EV),并将增加图像传感器上的光量。摄像头通过调整绝对曝光时间和/或光圈来执行曝光补偿。

V4L2_CID_EXPOSURE_METERING

(枚举)

enum v4l2_exposure_metering -

确定摄像头如何测量用于帧曝光的光量。可能的值有

V4L2_EXPOSURE_METERING_AVERAGE

使用来自整个帧的光信息并取平均值,不给计量区域的任何特定部分加权。

V4L2_EXPOSURE_METERING_CENTER_WEIGHTED

对来自整个帧的光信息取平均值,优先考虑计量区域的中心。

V4L2_EXPOSURE_METERING_SPOT

仅测量帧中心非常小的区域。

V4L2_EXPOSURE_METERING_MATRIX

多区域测光。光强度在帧的多个点处测量,并将结果组合在一起。区域选择的算法及其在计算最终值中的意义取决于设备。

V4L2_CID_PAN_RELATIVE (整数)

此控制将摄像头水平转动指定的量。单位未定义。正值将摄像头向右移动(从上方看时顺时针方向),负值向左移动。值为零不会导致移动。这是一个只写控制。

V4L2_CID_TILT_RELATIVE (整数)

此控制将摄像头垂直转动指定的量。单位未定义。正值将摄像头向上移动,负值向下移动。值为零不会导致移动。这是一个只写控制。

V4L2_CID_PAN_RESET (按钮)

设置此控制时,摄像头将水平移动到默认位置。

V4L2_CID_TILT_RESET (按钮)

设置此控制时,摄像头将垂直移动到默认位置。

V4L2_CID_PAN_ABSOLUTE (整数)

此控制将摄像头水平转动到指定的位置。正值将摄像头向右移动(从上方看时顺时针方向),负值向左移动。驱动程序应将这些值解释为弧秒,有效值在 -180 * 3600 和 +180 * 3600 之间(包括两者)。

V4L2_CID_TILT_ABSOLUTE (整数)

此控制将摄像头垂直转动到指定的位置。正值将摄像头向上移动,负值向下移动。驱动程序应将这些值解释为弧秒,有效值在 -180 * 3600 和 +180 * 3600 之间(包括两者)。

V4L2_CID_FOCUS_ABSOLUTE (整数)

此控制将摄像头的焦点设置为指定位置。单位未定义。正值将焦点设置得更靠近摄像头,负值朝向无穷远。

V4L2_CID_FOCUS_RELATIVE (整数)

此控制将摄像头的焦点移动指定的量。单位未定义。正值将焦点移动得更靠近摄像头,负值朝向无穷远。这是一个只写控制。

V4L2_CID_FOCUS_AUTO (布尔值)

启用连续自动对焦调整。启用此功能时手动对焦调整的效果是未定义的,驱动程序应忽略此类请求。

V4L2_CID_AUTO_FOCUS_START (按钮)

启动单次自动对焦过程。当 V4L2_CID_FOCUS_AUTO 设置为 TRUE (1) 时设置此控制的效果是未定义的,驱动程序应忽略此类请求。

V4L2_CID_AUTO_FOCUS_STOP (按钮)

中止使用 V4L2_CID_AUTO_FOCUS_START 控制启动的自动对焦。它仅当禁用连续自动对焦时才有效,即当 V4L2_CID_FOCUS_AUTO 控制设置为 FALSE (0) 时。

V4L2_CID_AUTO_FOCUS_STATUS (位掩码)

自动对焦状态。这是一个只读控制。

设置 V4L2_CID_3A_LOCK 控制的 V4L2_LOCK_FOCUS 锁定位可能会停止 V4L2_CID_AUTO_FOCUS_STATUS 控制值的更新。

V4L2_AUTO_FOCUS_STATUS_IDLE

自动对焦未激活。

V4L2_AUTO_FOCUS_STATUS_BUSY

正在进行自动对焦。

V4L2_AUTO_FOCUS_STATUS_REACHED

已达到焦点。

V4L2_AUTO_FOCUS_STATUS_FAILED

自动对焦失败,驱动程序将不会从这种状态转换,直到应用程序执行另一操作。

V4L2_CID_AUTO_FOCUS_RANGE

(枚举)

enum v4l2_auto_focus_range -

确定镜头可以调整的自动对焦距离范围。

V4L2_AUTO_FOCUS_RANGE_AUTO

摄像头自动选择对焦范围。

V4L2_AUTO_FOCUS_RANGE_NORMAL

正常距离范围,为了获得最佳自动对焦性能而受到限制。

V4L2_AUTO_FOCUS_RANGE_MACRO

微距(近摄)自动对焦。摄像头将使用其可能的最小距离进行自动对焦。

V4L2_AUTO_FOCUS_RANGE_INFINITY

镜头设置为对焦在无限远处的物体上。

V4L2_CID_ZOOM_ABSOLUTE (整数)

将物镜焦距指定为绝对值。变焦单位是特定于驱动程序的,其值应为正整数。

V4L2_CID_ZOOM_RELATIVE (整数)

将物镜焦距指定为相对于当前值。正值将变焦镜头组向长焦方向移动,负值向广角方向移动。变焦单位是特定于驱动程序的。这是一个只写控制。

V4L2_CID_ZOOM_CONTINUOUS (整数)

以指定的速度移动物镜组,直到达到物理设备限制或直到显式请求停止移动。正值将变焦镜头组向长焦方向移动。值为零停止变焦镜头组移动。负值将变焦镜头组向广角方向移动。变焦速度单位是特定于驱动程序的。

V4L2_CID_IRIS_ABSOLUTE (整数)

此控制将摄像头的光圈设置为指定值。单位未定义。较大的值会使光圈张开得更宽,较小的值会使其闭合。

V4L2_CID_IRIS_RELATIVE (整数)

此控制将摄像头的光圈修改指定的量。单位未定义。正值会使光圈再张开一步,负值会使其再闭合一步。这是一个只写控制。

V4L2_CID_PRIVACY (布尔值)

防止摄像头采集视频。当此控制设置为 TRUE (1) 时,摄像头无法捕获任何图像。强制执行隐私的常用方法是传感器的机械遮挡和固件图像处理,但该设备不限于这些方法。实现隐私控制的设备必须支持读取访问,并且可以支持写入访问。

V4L2_CID_BAND_STOP_FILTER (整数)

打开或关闭摄像头传感器的带阻滤波器,或指定其强度。例如,可以使用此类带阻滤波器来滤除荧光灯组件。

V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE

(枚举)

enum v4l2_auto_n_preset_white_balance -

将白平衡设置为自动、手动或预设值。预设值确定光的色温,作为摄像头进行白平衡调整的提示,从而实现最准确的颜色表示。以下白平衡预设值按色温升序排列。

V4L2_WHITE_BALANCE_MANUAL

手动白平衡。

V4L2_WHITE_BALANCE_AUTO

自动白平衡调整。

V4L2_WHITE_BALANCE_INCANDESCENT

用于白炽灯(钨丝灯)照明的白平衡设置。它通常会使颜色变冷,大约对应于 2500...3500 K 的色温范围。

V4L2_WHITE_BALANCE_FLUORESCENT

用于荧光灯照明的白平衡预设值。它大约对应于 4000...5000 K 的色温。

V4L2_WHITE_BALANCE_FLUORESCENT_H

使用此设置,摄像头将补偿荧光灯 H 照明。

V4L2_WHITE_BALANCE_HORIZON

水平日光下的白平衡设置。它大约对应于 5000 K 的色温。

V4L2_WHITE_BALANCE_DAYLIGHT

晴朗天空下日光白平衡预设。它大约对应于 5000...6500 K 的色温。

V4L2_WHITE_BALANCE_FLASH

使用此设置,相机将补偿闪光灯的光线。它会稍微暖化颜色,大致对应于 5000...5500 K 的色温。

V4L2_WHITE_BALANCE_CLOUDY

多云天气下的白平衡预设。此选项大约对应于 6500...8000 K 的色温范围。

V4L2_WHITE_BALANCE_SHADE

阴影或重度阴天下的白平衡预设。它大约对应于 9000...10000 K 的色温。

V4L2_CID_WIDE_DYNAMIC_RANGE (布尔值)

启用或禁用相机的宽动态范围功能。此功能允许在场景中照明强度变化很大的情况下获得清晰的图像,即同时存在非常暗和非常亮的区域。它在相机中最常见的实现方式是组合两个具有不同曝光时间的后续帧。[1]

V4L2_CID_IMAGE_STABILIZATION (布尔值)

启用或禁用图像稳定。

V4L2_CID_ISO_SENSITIVITY (整数 菜单)

确定图像传感器的 ISO 等效值,指示传感器对光的敏感度。这些数字按照 ISO 12232:2006 标准以算术刻度表示,其中传感器灵敏度加倍由数值 ISO 值加倍表示。应用程序应将这些值解释为标准 ISO 值乘以 1000,例如,控制值 800 表示 ISO 0.8。驱动程序通常仅支持标准 ISO 值的一个子集。当 V4L2_CID_ISO_SENSITIVITY_AUTO 控制设置为 V4L2_CID_ISO_SENSITIVITY_MANUAL 以外的值时,设置此控制的效果是未定义的,驱动程序应忽略此类请求。

V4L2_CID_ISO_SENSITIVITY_AUTO

(枚举)

枚举 v4l2_iso_sensitivity_type -

启用或禁用自动 ISO 感光度调整。

V4L2_CID_ISO_SENSITIVITY_MANUAL

手动 ISO 感光度。

V4L2_CID_ISO_SENSITIVITY_AUTO

自动 ISO 感光度调整。

V4L2_CID_SCENE_MODE

(枚举)

枚举 v4l2_scene_mode -

此控制允许选择场景程序作为为常见拍摄场景优化的相机自动模式。在这些模式下,相机确定最佳曝光、光圈、对焦、测光、白平衡和等效感光度。这些参数的控制受场景模式控制的影响。每种模式的确切行为取决于相机规格。

当不使用场景模式功能时,应将此控制设置为 V4L2_SCENE_MODE_NONE,以确保可以访问其他可能相关的控制。定义了以下场景程序

V4L2_SCENE_MODE_NONE

场景模式功能已禁用。

V4L2_SCENE_MODE_BACKLIGHT

背光。当光线从主体后面照射时,补偿黑暗阴影,还可以自动打开闪光灯。

V4L2_SCENE_MODE_BEACH_SNOW

海滩和雪地。此模式补偿全白或明亮的场景,当相机的自动曝光基于平均场景亮度时,这些场景往往看起来是灰色和低对比度的。为了进行补偿,此模式会自动稍微过度曝光帧。还可以调整白平衡以补偿反射的雪看起来是蓝色而不是白色的事实。

V4L2_SCENE_MODE_CANDLELIGHT

烛光。相机通常会提高 ISO 感光度并降低快门速度。此模式补偿场景中相对较近的主体。禁用闪光灯以保留灯光的氛围。

V4L2_SCENE_MODE_DAWN_DUSK

黎明和黄昏。保留在黄昏前和清晨后在低自然光下看到的颜色。相机可能会关闭闪光灯,并自动对焦在无限远。通常会提高饱和度并降低快门速度。

V4L2_SCENE_MODE_FALL_COLORS

秋天的颜色。增加饱和度并调整白平衡以增强颜色。秋叶的照片会获得饱和的红色和黄色。

V4L2_SCENE_MODE_FIREWORKS

烟花。使用长曝光时间来捕捉烟花不断扩大的光爆。相机可能会调用图像稳定。

V4L2_SCENE_MODE_LANDSCAPE

风景。相机可能会选择小光圈以提供景深,并使用长曝光时间来帮助捕捉昏暗光线条件下的细节。焦点固定在无限远。适用于遥远和广阔的风景。

V4L2_SCENE_MODE_NIGHT

夜景,也称为夜景风景。专为低光照条件而设计,它保留黑暗区域的细节而不会使明亮的物体过曝。相机通常会将自身设置为中等到高的 ISO 感光度,具有相对较长的曝光时间,并关闭闪光灯。因此,图像噪点会增加,并可能出现图像模糊。

V4L2_SCENE_MODE_PARTY_INDOOR

派对和室内。旨在捕捉由室内背景照明以及闪光灯照亮的室内场景。相机通常会提高 ISO 感光度,并为低光照条件调整曝光。

V4L2_SCENE_MODE_PORTRAIT

人像。相机调整光圈,以减小景深,这有助于将主体与平滑的背景隔离。大多数相机都能识别场景中人脸的存在并对其进行对焦。调整色调以增强肤色。闪光灯的强度通常会降低。

V4L2_SCENE_MODE_SPORTS

运动。显著提高 ISO 并使用快速快门速度来冻结快速移动主体的运动。在这种模式下可能会看到增加的图像噪点。

V4L2_SCENE_MODE_SUNSET

日落。保留在日落和日出时看到的深色调。它会提高饱和度。

V4L2_SCENE_MODE_TEXT

文本。它应用额外的对比度和清晰度,它通常是为可读性优化的黑白模式。自动对焦可能会切换到近摄模式,此设置还可能涉及一些镜头失真校正。

V4L2_CID_3A_LOCK (位掩码)

此控制锁定或解锁自动对焦、曝光和白平衡。可以通过将相应的锁定位设置为 1 来独立暂停自动调整。然后,相机将保留设置,直到清除锁定位。定义了以下锁定位

如果未启用给定算法,驱动程序应忽略锁定它的请求,并且不应返回错误。一个示例可能是当 V4L2_CID_AUTO_WHITE_BALANCE 控制设置为 FALSE 时,应用程序设置位 V4L2_LOCK_WHITE_BALANCE。此控制的值可能会因曝光、白平衡或对焦控制而更改。

V4L2_LOCK_EXPOSURE

自动曝光调整锁定。

V4L2_LOCK_WHITE_BALANCE

自动白平衡调整锁定。

V4L2_LOCK_FOCUS

自动对焦锁定。

V4L2_CID_PAN_SPEED (整数)

此控制以特定速度水平转动相机。单位未定义。正值使相机向右移动(从上方看时顺时针方向),负值使相机向左移动。值为零会停止正在进行的运动,否则没有影响。

V4L2_CID_TILT_SPEED (整数)

此控制以指定的速度垂直转动相机。单位未定义。正值使相机向上移动,负值使相机向下移动。值为零会停止正在进行的运动,否则没有影响。

V4L2_CID_CAMERA_ORIENTATION (菜单)

此只读控制通过报告相机安装在设备上的位置来描述相机方向。控制值是常量,软件无法修改。此控制对于具有明确方向的设备(如手机、笔记本电脑和便携式设备)尤其有意义,因为该控制表示为相对于设备预期使用方向的位置。例如,安装在手机、平板电脑或笔记本电脑设备的用户侧的摄像头被认为是具有 V4L2_CAMERA_ORIENTATION_FRONT 方向,而安装在与前一个相对的另一侧的摄像头被认为是具有 V4L2_CAMERA_ORIENTATION_BACK 方向。未直接连接到设备或以允许其自由移动的方式连接的摄像头传感器(如网络摄像头和数码相机)被认为是具有 V4L2_CAMERA_ORIENTATION_EXTERNAL 方向。

V4L2_CAMERA_ORIENTATION_FRONT

相机朝向设备的用户侧。

V4L2_CAMERA_ORIENTATION_BACK

相机朝向设备的背面。

V4L2_CAMERA_ORIENTATION_EXTERNAL

相机未直接连接到设备,并且可以自由移动。

V4L2_CID_CAMERA_SENSOR_ROTATION (整数)

此只读控制描述了以逆时针方向应用到内存中捕获的图像的旋转校正(以度为单位),以补偿相机传感器安装旋转。

有关传感器安装旋转的精确定义,请参阅设备树绑定文件“video-interfaces.txt”中“旋转”属性的详细描述。

下面报告了一些示例,使用在用户面前从左向右游动的鲨鱼作为要捕获的示例场景。

  0               X-axis
0 +------------------------------------->
  !
  !
  !
  !           |\____)\___
  !           ) _____  __`<
  !           |/     )/
  !
  !
  !
  V
Y-axis

示例一 - 网络摄像头

假设您可以在与鲨鱼一起游泳时携带笔记本电脑,笔记本电脑的摄像头模块安装在笔记本电脑屏幕外壳的用户侧部分,通常用于视频通话。捕获的图像旨在以横向模式(宽度 > 高度)显示在笔记本电脑屏幕上。

相机通常倒置安装,以补偿镜头的光学反转效应。在这种情况下,V4L2_CID_CAMERA_SENSOR_ROTATION 控制的值为 0,无需旋转即可将图像正确显示给用户。

如果相机传感器不是倒置安装的,则需要补偿镜头的光学反转效应,并且 V4L2_CID_CAMERA_SENSOR_ROTATION 控制的值为 180 度,因为捕获到内存中的图像将导致旋转。

+--------------------------------------+
!                                      !
!                                      !
!                                      !
!              __/(_____/|             !
!            >.___  ____ (             !
!                 \(    \|             !
!                                      !
!                                      !
!                                      !
+--------------------------------------+

必须应用 180 度的软件旋转校正,才能在用户屏幕上正确显示图像。

+--------------------------------------+
!                                      !
!                                      !
!                                      !
!             |\____)\___              !
!             ) _____  __`<            !
!             |/     )/                !
!                                      !
!                                      !
!                                      !
+--------------------------------------+

示例二 - 手机摄像头

仅携带手机与鲨鱼一起游泳并使用安装在设备背面、背对用户的摄像头拍照更方便。捕获的图像旨在以纵向模式(高度 > 宽度)显示,以匹配设备屏幕方向和拍照时使用的设备使用方向。

相机传感器通常以其像素阵列较长的一侧与设备较长的一侧对齐的方式安装,倒置安装以补偿镜头的光学反转效应。

捕获到内存中的图像将会旋转,并且 V4L2_CID_CAMERA_SENSOR_ROTATION 的值将报告 90 度旋转。

+-------------------------------------+
|                 _ _                 |
|                \   /                |
|                 | |                 |
|                 | |                 |
|                 |  >                |
|                <  |                 |
|                 | |                 |
|                   .                 |
|                  V                  |
+-------------------------------------+

必须应用逆时针方向 90 度的校正,才能在设备屏幕上以纵向模式正确显示图像。

+--------------------+
|                    |
|                    |
|                    |
|                    |
|                    |
|                    |
|   |\____)\___      |
|   ) _____  __`<    |
|   |/     )/        |
|                    |
|                    |
|                    |
|                    |
|                    |
+--------------------+
V4L2_CID_HDR_SENSOR_MODE (菜单)

更改传感器 HDR 模式。HDR 图片是通过合并同一场景的两次捕获(使用两种不同的曝光时间)获得的。HDR 模式描述了这两种捕获在传感器中合并的方式。

由于每个传感器的模式都不同,菜单项不由该控件标准化,而是留给程序员处理。