C++ opencv中二维到三维的变换矩阵
我有一些2D点集(X,Y)对应于3D点集(X,Y,Z)。 二维点是从摄像机中捕获的,三维点是根据世界基准的真实坐标。我想找到它们之间的转换矩阵,也就是说,如何将其他2D点转换为3D点 我尝试过getPespectiveTransform函数,但在这个问题上它不起作用C++ opencv中二维到三维的变换矩阵,c++,opencv,3d,2d,transformation,C++,Opencv,3d,2d,Transformation,我有一些2D点集(X,Y)对应于3D点集(X,Y,Z)。 二维点是从摄像机中捕获的,三维点是根据世界基准的真实坐标。我想找到它们之间的转换矩阵,也就是说,如何将其他2D点转换为3D点 我尝试过getPespectiveTransform函数,但在这个问题上它不起作用 如何编写回归以找到此变换矩阵?您可以使用OpenCV的solvePnP,它提供旋转和平移矩阵。在这个答案中,您可以看到更详细的信息: 尽管需要注意的是,图像中的一个点对应于三维空间中的一条射线,因此你需要在这两条射线之间进行“变换”
如何编写回归以找到此变换矩阵?您可以使用
OpenCV
的solvePnP
,它提供旋转和平移矩阵。在这个答案中,您可以看到更详细的信息:
尽管需要注意的是,图像中的一个点对应于三维空间中的一条射线,因此你需要在这两条射线之间进行“变换”…你可以(基本上)找到三维点截取的射线并将其映射到二维空间中,但换一种方式并不容易。我的意思是,我设置了两个点,一个是二维(x,y),另一个是三维的(x,y,z)。我想找到这两个集合之间的关系,我不使用任何相机校准来转换。对不起,我的英语不好。这似乎是
solvePnP
(请参阅)的问题。不过,您需要知道相机矩阵和内部系数。