雙目測距主要步驟如下:
-
左右兩張圖片 → 匹配 → 得到視差圖
disp
; -
使用
cv2.reprojectImageTo3D(disp, Q)
將視差圖 重投影 成三維坐標圖 → 得到points_3d
-
什么是
points_3d
?points_3d = cv2.reprojectImageTo3D(disp, Q)
points_3d.shape == (H, W, 3)
-
它是一個 三維數組,每個像素位置上存儲該像素對應的
(X, Y, Z)
空間坐標(以相機為坐標原點)。 -
假設你有一張 大小為 4x3 像素的圖像,points_3d.shape = (4, 3, 3)? # 高 4 行,寬 3 列,每個像素有 3 個坐標值
-
points_3d = [[[X00, Y00, Z00], [X01, Y01, Z01], [X02, Y02, Z02]],[[X10, Y10, Z10], [X11, Y11, Z11], [X12, Y12, Z12]],[[X20, Y20, Z20], [X21, Y21, Z21], [X22, Y22, Z22]],[[X30, Y30, Z30], [X31, Y31, Z31], [X32, Y32, Z32]] ]
你可以使用
points_3d[i, j, 0]
取 X 坐標,points_3d[i, j, 1]
取 Y,points_3d[i, j, 2]
取 Z。