在奧比中光(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
庫中用于快速配置設備開關類功能的便捷接口,通過預定義的屬性標識符和布爾值,可輕松控制深度相機的各種輔助功能和工作模式,是設備初始化和參數配置階段的常用方法。使用時需注意設備兼容性和調用時機,確保功能正常生效。