在奥比中光(Orbbec)SDK(通常称为ob
库)中,setBoolProperty
函数是用于设置设备或传感器的布尔类型属性的核心接口。它主要用于开启/关闭设备的某些功能或模式,是配置设备行为的重要方法。
函数原型与参数解析
setBoolProperty
的典型函数原型如下(不同SDK版本可能略有差异):
ob_status setBoolProperty(ob_property property, bool value);
参数说明:
-
ob_property property
要设置的属性标识符,是ob
库预定义的枚举值,代表设备支持的特定功能或配置项。例如:OB_PROP_DEPTH_HOLE_FILL_ENABLE
:开启/关闭深度图孔洞填充功能OB_PROP_COLOR_AUTO_EXPOSURE_ENABLE
:开启/关闭彩色相机自动曝光OB_PROP_IR_AUTO_EXPOSURE_ENABLE
:开启/关闭红外相机自动曝光OB_PROP_DEPTH_MIRROR_ENABLE
:开启/关闭深度图镜像翻转OB_PROP_COLOR_MIRROR_ENABLE
:开启/关闭彩色图镜像翻转
-
bool value
要设置的属性值,true
表示开启功能,false
表示关闭功能。 -
返回值
ob_status
操作结果状态码,常见值包括:OB_STATUS_OK
:设置成功OB_STATUS_INVALID_PARAMETER
:参数无效(如属性不支持布尔类型)OB_STATUS_DEVICE_DISCONNECTED
:设备已断开连接OB_STATUS_NOT_SUPPORTED
:设备不支持该属性
核心功能与用途
setBoolProperty
的核心作用是通过布尔值(开/关)快速切换设备的功能状态,无需复杂参数配置。常见应用场景包括:
-
数据处理功能的开关
例如开启深度图的孔洞填充(OB_PROP_DEPTH_HOLE_FILL_ENABLE
),可自动修复深度图中因物体遮挡或传感器限制产生的“孔洞”(无效值区域),优化数据质量。 -
相机工作模式切换
例如控制自动曝光(OB_PROP_COLOR_AUTO_EXPOSURE_ENABLE
):- 设为
true
时,相机自动调整曝光时间以适应环境光变化,适合光线不稳定的场景; - 设为
false
时,可手动通过setIntProperty
设置固定曝光值,适合需要稳定曝光参数的场景(如工业检测)。
- 设为
-
图像方向调整
通过OB_PROP_DEPTH_MIRROR_ENABLE
等属性控制图像是否镜像翻转,用于修正相机安装方向导致的图像左右颠倒问题。
使用注意事项
-
属性支持性
不同型号的奥比中光设备(如Astra、Gemini等)支持的属性可能不同,需参考对应设备的SDK文档。可通过getPropertyList
获取设备支持的属性列表。 -
调用时机
通常需在设备初始化完成后、启动数据流(start
)之前调用,部分属性可能需要重启流才能生效。 -
与其他属性的依赖关系
某些功能的开启可能依赖其他属性。例如,手动曝光模式(AUTO_EXPOSURE
设为false
)必须配合手动设置曝光值(setIntProperty
)才能正常工作。 -
错误处理
务必检查返回值ob_status
,避免因设备不支持或参数错误导致功能未生效。
示例代码
// 假设device为已初始化的设备对象
ob_status status;// 开启深度图孔洞填充
status = device->setBoolProperty(OB_PROP_DEPTH_HOLE_FILL_ENABLE, true);
if(status != OB_STATUS_OK) {std::cout << "开启孔洞填充失败,错误码:" << status << std::endl;
}// 关闭彩色相机自动曝光(准备手动设置曝光值)
status = device->setBoolProperty(OB_PROP_COLOR_AUTO_EXPOSURE_ENABLE, false);
if(status == OB_STATUS_OK) {std::cout << "已关闭自动曝光" << std::endl;// 此处可继续调用setIntProperty设置手动曝光值
}
setBoolProperty
是ob
库中用于快速配置设备开关类功能的便捷接口,通过预定义的属性标识符和布尔值,可轻松控制深度相机的各种辅助功能和工作模式,是设备初始化和参数配置阶段的常用方法。使用时需注意设备兼容性和调用时机,确保功能正常生效。