OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
使用 Orbbec 3D 相機 (UVC)

上一個教程: 使用奧比中光 Astra 3D 相機
下一個教程: 使用 Creative Senz3D 和其他 Intel RealSense SDK 相容的深度感測器

原始作者Jinyue Chen
相容性OpenCV >= 4.10

介紹

本教程專門介紹基於 UVC 協議的奧比中光 3D 相機。 對於使用依賴 OpenNI 的舊奧比中光 3D 相機,請參閱之前的教程

與使用基於 OpenNI 的 Astra 3D 相機(需要使用 OpenNI2 SDK 構建 OpenCV)不同,透過 OpenCV 訪問奧比中光 UVC 3D 相機不需要安裝奧比中光 SDK。 透過使用 cv::VideoCapture 類,使用者可以從 3D 相機獲取流資料,類似於使用 USB 相機。 深度圖和彩色影像的校準和對齊在內部完成。

說明

為了在 OpenCV 中使用 3D 相機,您可以參考 Get Started 安裝 OpenCV。

請注意,從 4.11 開始,Mac OS 使用者需要使用標誌 -DOBSENSOR_USE_ORBBEC_SDK=ON 從原始碼編譯 OpenCV 才能使用相機

cmake -DOBSENSOR_USE_ORBBEC_SDK=ON ..
make
sudo make install

程式碼

程式碼解釋

Python

  • 開啟奧比中光深度感測器:使用 cv.VideoCapture(0, cv.CAP_OBSENSOR) 嘗試開啟第一個奧比中光深度感測器裝置。 如果相機無法開啟,程式將退出並顯示錯誤訊息。
  • 迴圈抓取和處理資料:在無限迴圈中,程式碼不斷從相機抓取資料。 orbbec_cap.grab() 方法嘗試抓取一幀。
  • 處理 BGR 影像:使用 orbbec_cap.retrieve(None, cv.CAP_OBSENSOR_BGR_IMAGE) 來檢索 BGR 影像資料。 如果成功檢索,則使用 cv.imshow("BGR", bgr_image) 在視窗中顯示 BGR 影像。
  • 處理深度影像:使用 orbbec_cap.retrieve(None, cv.CAP_OBSENSOR_DEPTH_MAP) 來檢索深度影像資料。 如果成功檢索,則首先將深度影像歸一化到 0 到 255 的範圍,然後應用偽彩色影像,並使用 cv.imshow("DEPTH", color_depth_map) 在視窗中顯示結果。
  • 鍵盤中斷:使用 cv.pollKey() 檢測鍵盤事件。 如果按下鍵,迴圈將中斷,程式結束。
  • 釋放資源:退出迴圈後,使用 orbbec_cap.release() 釋放相機資源。

C++

  • 開啟奧比中光深度感測器:使用 VideoCapture obsensorCapture(0, CAP_OBSENSOR) 嘗試開啟第一個奧比中光深度感測器裝置。 如果相機無法開啟,將顯示一條錯誤訊息,程式退出。
  • 檢索相機內部引數:使用 obsensorCapture.get() 檢索相機的內部引數,包括焦距 (fx, fy) 和主點 (cx, cy)。
  • 迴圈抓取和處理資料:在無限迴圈中,程式碼不斷從相機抓取資料。 obsensorCapture.grab() 方法嘗試抓取一幀。
  • 處理 BGR 影像:使用 obsensorCapture.retrieve(image, CAP_OBSENSOR_BGR_IMAGE) 來檢索 BGR 影像資料。 如果成功檢索,則使用 imshow("BGR", image) 在視窗中顯示 BGR 影像。
  • 處理深度影像:使用 obsensorCapture.retrieve(depthMap, CAP_OBSENSOR_DEPTH_MAP) 來檢索深度影像資料。 如果成功檢索,則對深度影像進行歸一化並應用偽彩色影像,然後使用 imshow("DEPTH", adjDepthMap) 在視窗中顯示結果。 檢索到的深度值以毫米為單位,並被截斷為 300 到 5000(毫米)之間的範圍。 這個固定的範圍可以解釋為基於深度相機深度範圍的截斷,消除了深度圖上的無效畫素。
  • 將深度圖覆蓋在 BGR 影像上:將深度圖轉換為 8 點陣圖像,調整其大小以匹配 BGR 影像的大小,並以指定的透明度 (alpha) 將其覆蓋在 BGR 影像上。 疊加的影像使用 imshow("DepthToColor", image) 顯示在視窗中。
  • 鍵盤中斷:使用 pollKey() 檢測鍵盤事件。 如果按下鍵,迴圈將中斷,程式結束。
  • 釋放資源:退出迴圈後,相機資源將被釋放。

結果

Python

BGR 和 DEPTH 幀

C++

BGR 和 DEPTH 和 DepthToColor 幀

注意

  • Mac 使用者需要 sudo 許可權才能執行程式碼。
  • 韌體:如果您使用的是奧比中光 UVC 3D 相機,請確保您的相機韌體已更新到最新版本,以避免潛在的相容性問題。 有關更多詳細資訊,請參閱奧比中光的發行說明