Ask Your Question

Revision history [back]

Rotation vector interpretation

I use opencv cv2.solvePnP() function to calculate rotation and translation vectors. Rotation is returned as rvec [vector with 3DOF]. I would like to ask for help with interpreting the rvec.

As far as I understand rvec = the rotation vector representation:

  • the rotation vector is the axis of the rotation
  • the length of rotation vector is the rotation angle θ in radians [around axis, so rotation vector]

Rvec returned by solvePnP:

rvec = [[-1.5147142 ] [ 0.11365167] [ 0.10590861]]

Then:

angle_around_rvec = sqrt(-1.5147142^2 + 0.11365167^2 + 0.10590861^2) [rad] = 1.52266 [rad] = 1.52266*180/3.14 [deg] = 87.286 [deg]

1. Does 3 rvec components correspond to world coordinates? Or what are these directions?

2. Can I interpret the vector components as separate rotation angles in radians around components directions?

My rvec components interpretation:

angle_around_X = -1.5147142 [rad] = -1.5147*180/3.14 [deg] = -86.83 [deg]

angle_around_Y = 0.11365167 [rad] = 0.11365167*180/3.14 [deg] = 6.52 [deg]

angle_around_Z = 0.10590861 [rad] = 0.10590861*180/3.14 [deg] = 6.07 [deg]

My usecase: I have coordinates of four image points. I know the coordinates of these points in the real world. I know camera intrinsic matrix. I use PnP3 to get rotation and translation vector. From rotation matrix, I would like to find out what are the angles around fixed global/world axes: X, Y, Z. I am NOT interested in Euler angles. I want to find out how an object is being rotated around the fixed world coordinates (not it's own coordinate system).

I would really appreciate your help. I feel lost in rotation. Thank you in advance.