2017-01-29 39 views
1

我有一個視差圖。ReprojectImageTo3D圖像中的相應像素(立體視覺)

基於視差圖上,懸停在「左圖像的顯示屏:

X和圖像的y,所以,如果我上懸停左上角大多數,它將顯示x:0, y:0

的下一步是顯示特定像素的距離,讓我的生活更輕鬆,我會嘗試與reprojectImageTo3D(disp, Q)

我從stereoRectify

Q

現在,reprojectImageTo3D在python中,返回一個n by 3矩陣。

所以我可以看到,它是一排x y z座標。想知道,我怎麼知道這些座標對應哪個像素?

這是3D點的樣品是我救了使用numpy.savetxt

http://pastebin.com/wwDCYwjA

BTW:我做任何Python的東西,但GUI在Java中,我沒有時間去在Python中學習GUI。

回答

1

如果你正確計算你的視差圖,你應該得到(n1,n2,1)二維數組,其中n1,n2 - 圖像像素的軸數,1-通道數(單通道,其中包含距離來自左側和右側圖像的對應像素之間的像素)。你應該通過輸入disp.shape來檢查。之後,您應該將您的視差圖的視角傳遞給reprojectImageTo3D函數並獲得具有(n1,n2,3)形狀(第三維包含3D點的X,Y,Z座標)的ndarray。您可以檢查通過鍵入:

threeDImage = reprojectImageTo3D(disp, Q) 
print threeDImage.shape 

最後,因爲你基於左圖像進行您的視差圖,每一個像素,它有COORDS X,Y左圖像(或視差圖)上,相當於threeDImage [ x] [y] 3D點。請記住,該行:0,列:0是基於opencv處理圖像的矩陣的左上角元素:

0/0---column---> 
| 
| 
row 
| 
| 
v 
+0

嗨,謝謝,你是對的,我意識到我做錯了什麼事。在python例子中,有一個掩碼來過濾視差,並且它將點重新整形爲n×3矩陣。我發現,原來,reprojectImageTo3D返回與圖像相同的形狀:D – Wreigh