[英]ReprojectImageTo3D corresponding pixel in image (Stereo Vision)
我有一個視差圖。
根據視差圖,將鼠標懸停在“左圖”上會顯示:
圖像的X
和y
,所以如果我將鼠標懸停在最左上角,它將顯示x:0, y:0
下一步是顯示特定像素的距離,為了讓我的生活更輕松,我將嘗試使用reprojectImageTo3D(disp, Q)
我從stereoRectify
得到了Q
現在,在 python 中reprojectImageTo3D
返回一個n by 3
矩陣。
所以我可以看到,它是一行xyz
坐標。 想知道,我怎么知道這些坐標對應於哪個像素?
這是我使用 numpy.savetxt 保存的 3D 點示例
順便說一句:我在 python 中做所有事情,但是在 Java 中做 GUI,我沒有時間在 python 中學習 GUI。
如果您正確計算視差圖,您應該得到 (n1,n2,1) 維數組,其中 n1,n2 - 軸的圖像像素數,1 - 通道數(單通道,包含對應像素之間的像素距離)從左右圖像)。 您應該通過輸入disp.shape
來disp.shape
。 之后,您應該將視差圖的 ndarray 傳遞給reprojectImageTo3D
函數並獲得 ndarray,它具有 (n1,n2,3) 形狀(第三維包含 3D 點的 X、Y、Z 坐標)。 您可以通過鍵入以下內容進行檢查:
threeDImage = reprojectImageTo3D(disp, Q)
print threeDImage.shape
最后,由於您根據左圖像制作了視差圖,因此在左圖像(或視差圖)上具有坐標 x,y 的每個像素對應於 ThreeDImage[x][y] 3D 點。 請記住, row:0, column:0 是矩陣的左上角元素,基於 opencv 處理圖像:
0/0---column--->
|
|
row
|
|
v
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.