我想计算手对象的旋转角度。此步骤的目的是使对象对齐。其主轴和副轴与坐标系中的x轴和y轴平行。
首先,我使用MATLAB来做到这一点。 1.在手对象中找到白色像素坐标,返回n×2矩阵。 2.计算该n乘2矩阵的协方差矩阵。 3.使用eigs函数得到特征值和特征向量,特征向量矩阵是2乘2矩阵。 4.旋转角度由sigma = arctan(eigenvecotor(1,1)/ eigenvecotor(2,1))* 180 / pi
计算结果很好。
我怎么能在OpenCV中做同样的事情?我已多次测试它,但结果不正确。
我也尝试使用以下代码,但使用此方法也不正确。
(结果是手形图像的垫子)
Moments mu = moments(result, false);
Point2d mc(mu.m10/mu.m00, mu.m01/mu.m00);
double m11 = mu.m11 ;
double m20 = mu.m20 ;
double m02 = mu.m02 ;
double orientation = 0.5*atan(2*m11 / (m20 - m02))*180/M_PI;
有人可以帮我编写代码,或者给我一些线索,告诉我如何实现与OpenCV中Matlab相同的方法?
非常感谢您的关注和时间。