我试图使用OpenCV库中的findHomography函数解决plane2plane投影问题.作为玩具示例,我在R2,P中有一组点,在R2,Q中有第二组点,其中Qx = Px + 50,Qy = Py.意思是我将x坐标偏移了50.现在我运行以下代码:
Mat projectionMatrix = findHomography(Q, P);
vector<Point2f> projectedPoints(objectCoordinates.size());
perspectiveTransform(Q, projectedPoints, projectionMatrix);
Run Code Online (Sandbox Code Playgroud)
这给了我P,这很棒.但是,现在我想要旋转和平移矩阵,R&T,这就是我感到困惑的地方.OpenCV 3有一个函数decomposeHomographyMat,它为R和T返回最多4个解决方案(也返回法线但我没有存储它们).我这样运行:
vector<Mat> Rs;
vector<Mat> Ts;
decomposeHomographyMat(projectionMatrix, cameraMatrix, Rs, Ts, noArray());
Run Code Online (Sandbox Code Playgroud)
在cameraMatrix我用的是尝试和以前的实验测试.好的,所以我得到了我的四个结果.看着它们,我注意到我得到了单一矩阵作为所有R的结果,这很棒.然而,所有的平移向量都是[0,0,0] T,而我预计它们中至少有一个是[-50,0,0] T. 有什么我需要做的结果decomposeHomographyMat来获得预期的行为?
谢谢