目录
[1. ColorTemperature(色温调节)](#1. ColorTemperature(色温调节))
[2. ExposureCompensation(曝光补偿)](#2. ExposureCompensation(曝光补偿))
[3. IsoSensitivity(ISO 感光度)](#3. IsoSensitivity(ISO 感光度))
[4. ManualExposureTime(手动曝光时间)](#4. ManualExposureTime(手动曝光时间))
[5. CustomFocusPoint(自定义对焦点)](#5. CustomFocusPoint(自定义对焦点))
[6. FocusDistance(对焦距离)](#6. FocusDistance(对焦距离))
1. ColorTemperature(色温调节)
-
功能说明
允许调整摄像头的白平衡色温,通过改变图像的冷暖色调来适应不同光照环境(如日光、荧光灯、阴影等)。
-
实现方式
-
通过
QCamera::setColorTemperature(int value)
设置具体色温值(单位:开尔文,K)。 -
支持的色温范围可通过
QCamera::colorTemperatureRange()
获取。
-
-
代码中的检测逻辑
cppbool supported = features.testFlag(QCamera::Feature::ColorTemperature); ui->chkBoxCam_Color->setChecked(supported);
2. ExposureCompensation(曝光补偿)
-
功能说明
调整摄像头的曝光补偿值,用于在自动曝光模式下微调亮度(如过曝时降低补偿值,欠曝时增加)。
-
实现方式
-
通过
QCamera::setExposureCompensation(float value)
设置补偿值(通常范围为 -3.0 到 +3.0)。 -
支持的补偿范围和步长可通过
QCamera::exposureCompensationRange()
获取。
-
-
代码中的检测逻辑
cppsupported = features.testFlag(QCamera::Feature::ExposureCompensation); ui->chkBoxCam_Exposure->setChecked(supported);
3. IsoSensitivity(ISO 感光度)
-
功能说明
控制摄像头的感光度(ISO 值),影响图像在低光照下的亮度和噪点水平。
-
实现方式
-
通过
QCamera::setIsoSensitivity(int value)
设置 ISO 值。 -
支持的 ISO 范围可通过
QCamera::isoSensitivityRange()
获取。
-
-
代码中的检测逻辑
cppsupported = features.testFlag(QCamera::Feature::IsoSensitivity); ui->chkBoxCam_Iso->setChecked(supported);
4. ManualExposureTime(手动曝光时间)
-
功能说明
允许手动设置摄像头的曝光时间(快门速度),适用于需要精确控制曝光的场景(如高速运动拍摄)。
-
实现方式
-
通过
QCamera::setManualExposureTime(float seconds)
设置曝光时间(例如 1/1000 秒)。 -
支持的曝光时间范围可通过
QCamera::exposureTimeRange()
获取。
-
-
代码中的检测逻辑
cppsupported = features.testFlag(QCamera::Feature::ManualExposureTime); ui->chkBoxCam_Manual->setChecked(supported);
5. CustomFocusPoint(自定义对焦点)
-
功能说明
允许用户指定摄像头对焦的特定区域(如点击预览画面的某个位置进行对焦)。
-
实现方式
-
通过
QCamera::setCustomFocusPoint(const QPointF &point)
设置对焦点(归一化坐标,范围 0.0~1.0)。 -
需结合
QVideoWidget
的点击事件获取用户选择的坐标。
-
-
代码中的检测逻辑
cppsupported = features.testFlag(QCamera::Feature::CustomFocusPoint); ui->chkBoxCam_Custom->setChecked(supported);
6. FocusDistance(对焦距离)
-
功能说明
控制摄像头的对焦距离(单位:米),适用于需要手动对焦的场景(如微距拍摄)。
-
实现方式
-
通过
QCamera::setFocusDistance(float distance)
设置对焦距离。 -
支持的距离范围可通过
QCamera::focusDistanceRange()
获取。
-
-
代码中的检测逻辑
cppsupported = features.testFlag(QCamera::Feature::FocusDistance); ui->chkBoxCam_Focus->setChecked(supported);
tips
testflag是检测相机是否启用相应feature,搭配使用的。
cpp
constexpr inline bool testFlag(Enum flag) const noexcept { return testFlags(flag); }
QCamera::Feature枚举
cpp
enum class Feature {
ColorTemperature = 0x1,
ExposureCompensation = 0x2,
IsoSensitivity = 0x4,
ManualExposureTime = 0x8,
CustomFocusPoint = 0x10,
FocusDistance = 0x20
};
Q_DECLARE_FLAGS(Features, Feature)
Q_FLAG(Features)