如何从透视矩阵中检测旋转 Angular ?

我写了这段代码,但是结果 Angular 不超过40 ...

Mat mmat;
mmat.create(3,3,CV_32FC1);
mmat=getPerspectiveTransform(templPoints,imgPoints);
cout<< mmat<<endl<<endl;
float angle=acos(mmat.at<double>(0,0));
angle=(angle*180)/3.14;
cout<<"angle is"<<angle<<endl;

最佳答案

getPerspectiveTransform返回单应性矩阵,可以将其分解为:

[R11,R12,T1]

[R21,R22,T2]

[P,P,1]

R代表旋转矩阵,T代表平移,P代表透视变形。

有关旋转矩阵表示的更多信息:

http://en.wikipedia.org/wiki/Rotation_matrix

http://mathworld.wolfram.com/RotationMatrix.html

08-25 07:40