libcamera操作摄像头参数
本文主要介绍使用C++在Linux下进行libcamera开发所能控制的全部参数的介绍
一、libcamera简介
根据libcamera官网的介绍,libcamera是一个相机支持库,它提供了一个易于使用的相机应用程序编程接口(API),并将其与Linux媒体堆栈的底层驱动程序分离开来。libcamera的目标是为Linux系统上的相机应用程序提供一个统一的API,而不管它们使用的是哪个媒体堆栈或相机硬件。
二、开始使用libcamera
1. 安装libcamera
你可以直接使用以下命令进行安装:
|
|
也可以使用源码进行安装:
|
|
需要注意,编译libcamera需要以下依赖:
- C++编译器: GCC 8.3或更高版本,或Clang 8.0或更高版本
- Meson构建系统: 0.60.0或更高版本
- 对于libcamera核心: libyaml-dev python3-yaml python3-ply python3-jinja2
详细请看libcamera - Getting Started
2. 使用libcamera
libcamera 官方api
libcamera 官方示例:
|
|
libcamera 开源库
注意:libcamera现在还不完善!!!
三、libcamera参数介绍
1. libcamera参数介绍
根据阅读官方源码中\libcamera\libcamera\control_ids.h文件,总结libcamera支持的参数如下:
枚举参数可点击跳转到对应的参数说明。
重要参数:
| 参数名 | 参数类型 | 参数值 | 参数说明 |
|---|---|---|---|
AeEnable |
bool |
true,false |
自动曝光启用 |
AeLocked |
bool |
true,false |
自动曝光锁定 |
ExposureValue |
float |
- |
曝光值 |
ExposureTime |
int32_t |
- |
曝光时间 |
AnalogueGain |
float |
- |
模拟增益 |
AwbEnable |
bool |
true,false |
自动白平衡启用 |
AwbMode |
int32_t |
AwbModeValues |
自动白平衡模式 |
SensorBlackLevels |
array |
{int32_t,int32_t,int32_t,int32_t} |
传感器黑电平 |
全部参数:
| 参数名 | 参数类型 | 参数值 | 参数说明 |
|---|---|---|---|
AeEnable |
bool |
true,false |
自动曝光启用 |
AeLocked |
bool |
true,false |
自动曝光锁定 |
AeMeteringMode |
int32_t |
AeMeteringModeValues |
自动曝光测光模式 |
AeConstraintMode |
int32_t |
AeConstraintModeValues |
自动曝光约束模式 |
AeExposureMode |
int32_t |
AeExposureModeEnum |
自动曝光模式 |
ExposureValue |
float |
- |
曝光值 |
ExposureTime |
int32_t |
- |
曝光时间 |
AnalogueGain |
float |
- |
模拟增益 |
AeFlickerMode |
int32_t |
FlickerOff, FlickerManual,FlickerAuto |
自动曝光闪烁模式 |
AeFlickerPeriod |
int32_t |
- |
自动曝光闪烁周期 |
Brightness |
float |
- |
亮度 |
Contrast |
float |
- |
对比度 |
AwbEnable |
bool |
true,false |
自动白平衡启用 |
AwbMode |
int32_t |
AwbModeValues |
自动白平衡模式 |
AwbLocked |
bool |
true,false |
自动白平衡锁定 |
ColourGains |
array |
{float,float} | 色彩增益 |
ColourTemperature |
int32_t |
- |
色温 |
Saturation |
float |
- |
饱和度 |
SensorBlackLevels |
array |
{int32_t,int32_t,int32_t,int32_t} |
传感器黑电平 |
Sharpness |
float |
- |
锐度 |
FocusFoM |
int32_t |
- |
对焦指标 |
不可修改参数:
| 参数名 | 参数类型 | 参数值 | 参数说明 |
|---|---|---|---|
AeFlickerDetected |
int32_t |
检测到的曝光闪烁 | |
Lux |
float |
光照强度 |
自动白平衡模式值:
| 参数名 | 参数值 | 参数说明 |
|---|---|---|
AwbAuto |
0 | 自动模式。相机会自动分析场景并选择最佳的白平衡设置。 |
AwbIncandescent |
1 | 白炽灯模式。用于在白炽灯照明下拍摄时,通常会添加蓝色调以抵消黄色光源。 |
AwbTungsten |
2 | 钨丝灯模式。适用于钨丝灯(一种类型的白炽灯)照明,通常比一般的白炽灯模式更加强调蓝色调。 |
AwbFluorescent |
3 | 荧光灯模式。适用于荧光灯照明,会添加暖色调以抵消荧光灯的冷色调。 |
AwbIndoor |
4 | 室内模式。用于室内环境,可能是一种平衡各种室内光源(如荧光灯和白炽灯)的综合设置。 |
AwbDaylight |
5 | 日光模式。用于户外日光下的拍摄,通常不需要太多的颜色调整,因为日光被认为是相对中性的光源。 |
AwbCloudy |
6 | 阴天模式。用于阴天或阴暗环境,可能会添加一些暖色调以补偿缺乏阳光。 |
AwbCustom |
7 | 自定义模式。允许用户手动设置白平衡,或者在相机中保存特定的白平衡设置用于特定的光照条件。 |
自动曝光测光模式:
| 参数名 | 参数值 | 参数说明 |
|---|---|---|
MeteringCentreWeighted |
0 | 中央重点测光模式。相机主要关注画面中央的亮度,并在一定程度上考虑到画面周围的区域。这种模式假设最重要的对象位于画面中心。 |
MeteringSpot |
1 | 点测光模式是一种非常精确的测光方式,它只测量画面中非常小的一部分(通常为画面中心的2-5%)。这种模式适用于那些需要精确控制曝光的场景,比如在背景明亮但主体较暗的情况下,或者在需要对特定区域进行曝光补偿时。 |
MeteringMatrix |
2 | 矩阵测光是一种先进的测光模式,它将画面分成多个区域,并对每个区域进行独立的测量。然后,相机使用复杂的算法来分析所有区域的数据,并结合场景的色彩、亮度、对比度以及焦点信息来决定最佳的曝光设置。这种模式通常能提供非常均衡和适应多种场景的曝光。 |
MeteringCustom |
3 | 自定义测光模式允许用户根据个人喜好或特定场景需求来调整测光的方式。这可能包括改变中央重点测光的权重、调整点测光的大小或位置,或者在矩阵测光的基础上应用特定的曝光偏好。 |
自动曝光约束模式:
| 参数名 | 参数值 | 参数说明 |
|---|---|---|
ConstraintNormal |
0 | 标准模式,它旨在为整个场景提供平衡的曝光。 |
ConstraintHighlight |
1 | 高光约束模式,相机特别注意场景中的亮部或高光区域,以避免这些区域过度曝光而丢失细节。 |
ConstraintShadows |
2 | 阴影约束模式,相机特别注意场景中的暗部或阴影区域,以避免这些区域过度曝光而丢失细节。 |
ConstraintCustom |
3 | 自定义模式,允许用户根据个人喜好或特定场景需求来调整曝光约束。 |