Положение камеры в мировой координате от cv :: solvePnP

У меня есть откалиброванная камера (внутренняя матрица и коэффициенты искажения), и я хочу знать положение камеры, зная некоторые 3d-точки и соответствующие им точки на изображении (2d-точки).

я знаю этоcv::solvePnP может помочь мне и после прочтенияэто а такжеэто Я так понимаю, что мне выходы решить PnPrvec а такжеtvec это поворот и перемещение объекта в системе координат камеры.

Поэтому мне нужно выяснить поворот / перемещение камеры в мировой системе координат.

Из приведенных выше ссылок кажется, что код прост в Python:

found,rvec,tvec = cv2.solvePnP(object_3d_points, object_2d_points, camera_matrix, dist_coefs)
rotM = cv2.Rodrigues(rvec)[0]
cameraPosition = -np.matrix(rotM).T * np.matrix(tvec)

Я не знаю Python / Numpy вещи (я использую C ++), но это не имеет большого смысла для меня:

Вывод rvec, tvec из solvePnP - это матрица 3x1, 3 элемента вектораcv2.Rodrigues (rvec) - это матрица 3x3cv2.Rodrigues (rvec) [0] - матрица 3x1, 3 элемента вектораcameraPosition - это матричное умножение 3x1 * 1x3, которое представляет собой матрицу .. 3x3. как я могу использовать это в OpenGL с простымglTranslatef а такжеglRotate звонки?

Ответы на вопрос(2)

Ваш ответ на вопрос