将3D世界坐标放在2D数组中

时间:2015-01-04 11:23:12

标签: python opencv 3d

我正在使用OpenCV和Python进行3D图像处理。

我可以从两个图像(左和右)中的两个点创建一个世界坐标(X,Y,Z)。

对于我的剩余计划: 拥有与左(或右)图像像素对应的2D数组非常重要。

他需要识别普通2D图像中的物体。完成后,给出已建立对象的x,y,z世界坐标。他确实用这个(x,y)得到了x,y,z世界坐标的图像en的(x,y)。

我的问题是:它是否有特殊功能或我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果您想使用glm,可以试试这个:

glm::vec3 array[image_resolution_y][image_resolution_x];

array[0][0][0] = x;
array[0][0][1] = y;
array[0][0][2] = z;

在Linux中,您可以使用apt-get install libglm-dev

安装glm

但是在你的课程中你可以创建一个点结构/类并使用它。

struct Point3D
{
float x;
float y;
float z;
};

Point3D array [image_resolution_y][image_resolution_x];
array[0][0].x = x;
array[0][0].y = y;
array[0][0].z = z;

答案 1 :(得分:0)

您必须使用此功能来计算差异:

disp = stereo.compute(imgL, imgR).astype(np.float32) / 16.0

如果您希望阵列具有3D点,则需要使用此功能,输出与图像大小相同。在每个像素上,您可以看到x,y,z位置:

points = cv2.reprojectImageTo3D(disp, Q)

如果你选择了一个点并且他给出了一个奇怪的回报或什么都没有,那么当然没有可用于该点的x,y,z位置。