我正在使用OpenCV和Python进行3D图像处理。
我可以从两个图像(左和右)中的两个点创建一个世界坐标(X,Y,Z)。
对于我的剩余计划: 拥有与左(或右)图像像素对应的2D数组非常重要。
他需要识别普通2D图像中的物体。完成后,给出已建立对象的x,y,z世界坐标。他确实用这个(x,y)得到了x,y,z世界坐标的图像en的(x,y)。
我的问题是:它是否有特殊功能或我该怎么做?
答案 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位置。