我有一张视差图。
根据视差图,将鼠标悬停在“左侧图像”上显示:
图片的 X
和y
,如果我将鼠标悬停在最左上角,则会显示x:0, y:0
下一步是显示特定像素的距离,让我的生活变得轻松,我将尝试使用reprojectImageTo3D(disp, Q)
我从Q
stereoRectify
现在,python中的reprojectImageTo3D
返回一个n by 3
矩阵。
所以我可以看到,它是一排x y z
坐标。想知道,我怎么知道这些坐标对应哪个像素?
这是我使用numpy.savetxt
保存的3D点的示例 BTW:我在python中做的一切,但是Java中的GUI,我没有时间在python中学习GUI。答案 0 :(得分:1)
如果你正确计算你的视差图,你应该得到(n1,n2,1)维数组,其中n1,n2 - 轴的图像像素数,1 - chanel数(单通道,包含像素距离)在左右图像的对应像素之间)。您应该输入disp.shape
来检查。之后你应该将你的视差图的ndarray传递给reprojectImageTo3D
函数并获得ndarray,它具有(n1,n2,3)形状(第三维包含3D点的X,Y,Z坐标)。您可以通过输入以下内容来检查:
threeDImage = reprojectImageTo3D(disp, Q)
print threeDImage.shape
最后,由于您基于左图像制作了视差图,因此在左图像(或视差图)上具有坐标x,y的每个像素对应于3DDImage [x] [y] 3D点。请记住,该行:0,列:0是矩阵的左上角元素,基于opencv处理图像:
0/0---column--->
|
|
row
|
|
v