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