I am using two images of a single object; the object is rotated a certain angle from the first image to the second.
I have calculated the POSE of each image and converted the rotational vector to Matrix using cv::Rodrigues(). Now how do I calculate and see how much it is rotated from its first position?
I have tried many ways but the results were not close to expected.
EDIT: My camera is fixed; only the object is moving.
We can get Euler angles from rotation matrix using following formula.
Given a 3×3 rotation matrix

The 3 Euler angles are



Here atan2 is the same arc tangent function, with quadrant checking, you typically find in C or Matlab.
Note: Care must be taken if the angle around the y-axis is exactly +/-90°. In that case all elements in the first column and last row, except the one in the lower corner, which is either 1 or -1, will be 0 (cos(1)=0). One solution would be to fix the rotation around the x-axis at 180° and compute the angle around the z-axis from: atan2(r_12, -r_22).
See also https://www.geometrictools.com/Documentation/EulerAngles.pdf, which includes implementations for six different orders of Euler angles.