像素坐标到3D线(OPENCV)
-
29-09-2019 - |
题
我在屏幕上显示了一个图像,该图像通过CvinitundistortMap&cvremap(完成的相机校准)不含,并且用户单击图像中的功能。因此,我具有该功能的(u,v)像素坐标,并且我还具有固有的矩阵和失真矩阵。
我正在寻找的是相机/现实世界中的3D线的方程式,用户单击必须在其上所列出的功能。我已经在相机的图像平面和功能之间具有垂直的距离,因此我可以将其与上述方程式结合在一起,以使我在空间中的功能的(x,y,z)坐标。
听起来很容易(近来的内在矩阵或其他内容?),但是我找不到任何地方的分步说明。 C ++或C#代码优先。
解决方案
这是有点古老的问题,但仍然对某人有用。所有线都经过点(0,0,0),因此:
line.x0 = 0; line.y0 = 0; line.z0 = 0;
方向向量如下:line.a =(u/fx) - (cx/fx); line.b =(v/fy) - (cy/fy); lin.c = 1;
CX,CY,FX,FY是相机矩阵的参数。方程式在“学习OpenCV”书中进行了解释。
不隶属于 StackOverflow