![]() |
OpenCV 4.12.0
開源計算機視覺
|
上一個教程: 使用奧比中光 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 才能使用相機
cv.VideoCapture(0, cv.CAP_OBSENSOR) 嘗試開啟第一個奧比中光深度感測器裝置。 如果相機無法開啟,程式將退出並顯示錯誤訊息。orbbec_cap.grab() 方法嘗試抓取一幀。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() 釋放相機資源。VideoCapture obsensorCapture(0, CAP_OBSENSOR) 嘗試開啟第一個奧比中光深度感測器裝置。 如果相機無法開啟,將顯示一條錯誤訊息,程式退出。obsensorCapture.get() 檢索相機的內部引數,包括焦距 (fx, fy) 和主點 (cx, cy)。obsensorCapture.grab() 方法嘗試抓取一幀。obsensorCapture.retrieve(image, CAP_OBSENSOR_BGR_IMAGE) 來檢索 BGR 影像資料。 如果成功檢索,則使用 imshow("BGR", image) 在視窗中顯示 BGR 影像。obsensorCapture.retrieve(depthMap, CAP_OBSENSOR_DEPTH_MAP) 來檢索深度影像資料。 如果成功檢索,則對深度影像進行歸一化並應用偽彩色影像,然後使用 imshow("DEPTH", adjDepthMap) 在視窗中顯示結果。 檢索到的深度值以毫米為單位,並被截斷為 300 到 5000(毫米)之間的範圍。 這個固定的範圍可以解釋為基於深度相機深度範圍的截斷,消除了深度圖上的無效畫素。alpha) 將其覆蓋在 BGR 影像上。 疊加的影像使用 imshow("DepthToColor", image) 顯示在視窗中。pollKey() 檢測鍵盤事件。 如果按下鍵,迴圈將中斷,程式結束。