将 3D 世界坐标放入 2D 数组

put 3D world coordinates in 2D array

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

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

对于我剩余的程序: 有一个对应于左(或右)图像像素的二维数组很重要。

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

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

如果你想使用 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

但是在您的课程中,您可以只创建一个点结构 / class 并使用它。

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;

你必须使用这个函数来计算视差:

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

当您需要使用此函数的 3D 点数组时,输出与图像大小相同。在每个像素上,您都会看到 x、y、z 位置:

points = cv2.reprojectImageTo3D(disp, Q)

如果您选择了一个点,而他给出了一个奇怪的 return 或什么都没有,那么当然没有该点可用的 x,y,z 位置。