title: Opencv get R and t from Essential Matrix
body: <p>I'm new to opencv and computer vision. I want to find the R and t matrix between two camera pose. So I generally follows the wikipedia:</p>
  
  <p><a href="https://en.wikipedia.org/wiki/Essential_matrix#Determining_R_and_t_from_E" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/Essential_matrix#Determining_R_and_t_from_E</a></p>
  
  <p>I find a group of the related pixel location of the same point in the two images. I get the essential matrix. Then I run the SVD. And print the 2 possible R and 2 possible t.</p>
  
  <p><strong>[What runs as expected]</strong></p>
  
  <p>If I only change the rotation alone (one of roll, pitch, yaw) or translation alone (one of x, y, z), it works perfect. For example, if I increase pitch to 15 degree, then I would get R and find the delta pitch is +14.9 degree. If I only increase x for 10 cm, then the t matrix is like [0.96, -0.2, -0.2]. </p>
  
  <p><strong>[What goes wrong]</strong></p>
  
  <p>However, if I change both rotation and translation, the R and t is non-sense. For example, if I increase x for 10 cm and increase pitch to 15 degree, then the delta degree is like [-23, 8,0.5], and the t matrix is like [0.7, 0.5, 0.5].</p>
  
  <p><strong>[Question]</strong></p>
  
  <p>I'm wondering why I could not get a good result if I change the rotation and translation at the same time. And it is also confusing why the unrelated rotation or translation (roll, yaw, y, z) also changes so much.</p>
  
  <p>Would anyone be willing to figure me out? Thanks.</p>
  
  <hr>
  
  <p><strong>[Solved and the reason]</strong></p>
  
  <p>OpenCV use a right-hand coordinate system. This is to say that the z-axis is projected from xy plane to the viewer direction. And our system is using a left-hand coordinate system. So as long as the changes are related to the z-axis, the result is non-sense.</p>