Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将三维世界坐标放置在二维阵列中_Python_Opencv_3d - Fatal编程技术网

Python 将三维世界坐标放置在二维阵列中

Python 将三维世界坐标放置在二维阵列中,python,opencv,3d,Python,Opencv,3d,我正在使用OpenCV和Python进行3D图像处理 我可以从两幅图像中的两个点(左和右)生成一个世界坐标(X,Y,Z) 对于我剩余的课程: 具有与左(或右)图像像素相对应的2D阵列非常重要 他需要识别普通2D图像中的对象。完成后,给出所创建对象的x、y、z世界坐标。他给出了图像en的(x,y),这个(x,y)得到了x,y,z世界坐标 我的问题是:有没有一个特殊的功能,或者我如何才能做到这一点 如果您想使用glm,可以尝试以下方法: glm::vec3 array[image_resolutio

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

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

对于我剩余的课程: 具有与左(或右)图像像素相对应的2D阵列非常重要

他需要识别普通2D图像中的对象。完成后,给出所创建对象的x、y、z世界坐标。他给出了图像en的(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

当然,您可以创建一个点结构/类并使用它

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
如果希望阵列包含使用此功能所需的三维点,则输出与图像大小相同。在每个像素上都可以看到x、y、z位置:

points = cv2.reprojectImageTo3D(disp, Q)

如果你选择了一个点,他给出了一个奇怪的返回或者什么都没有,那么这个点就没有可用的x,y,z位置

我不明白你的问题-有两个图像,你需要一个函数,在第一个图像(X,Y)中找到一个对象,并使用它从不同角度从图像中找到Z坐标?这些是什么样的图像?我在一栋大楼里做测线;我有一个3D相机,所以左边的图像我找到了线。仅对于应用程序,我需要一个2D数组,因此对于我找到的像素位置,我希望在2D数组中查找x、y、z点。