1 | initial version |
You can try finding the orientation of both the images using moments. Using the two orientation you can find the angle by taking the difference between them .
cv::Point3d findOrientation(const cv::Mat& src){
cv::Moments m = cv::moments(src, true);
double cen_x=m.m10/m.m00;
double cen_y=m.m01/m.m00;
double m_11= 2*m.m11-m.m00*(cen_x*cen_x+cen_y*cen_y);// m.mu11/m.m00;
double m_02=m.m02-m.m00*cen_y*cen_y;// m.mu02/m.m00;
double m_20=m.m20-m.m00*cen_x*cen_x;//m.mu20/m.m00;
double theta = m_20==m_02?0:atan2(m_11, m_20-m_02)/2.0;
// theta = (theta / PI) * 180.0; //if you want in radians.(or vice versa, not sure)
return cv::Point3d(cen_x,cen_y,theta);
}
I am returning the following: (x,y)(center of mass) and theta (orientation)