ReprojectImageTo3D图像中的相应像素(立体视觉)

时间:2017-01-29 17:11:49

标签: python opencv stereoscopy

我有一张视差图。

根据视差图,将鼠标悬停在“左侧图像”上显示:

图片的

Xy,如果我将鼠标悬停在最左上角,则会显示x:0, y:0

下一步是显示特定像素的距离,让我的生活变得轻松,我将尝试使用reprojectImageTo3D(disp, Q)

我从Q

获得了stereoRectify

现在,python中的reprojectImageTo3D返回一个n by 3矩阵。

所以我可以看到,它是一排x y z坐标。想知道,我怎么知道这些坐标对应哪个像素?

这是我使用numpy.savetxt

保存的3D点的示例

http://pastebin.com/wwDCYwjA

BTW:我在python中做的一切,但是Java中的GUI,我没有时间在python中学习GUI。

1 个答案:

答案 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