Posição da câmera na coordenada mundial de cv :: solvePnP

Eu tenho uma câmera calibrada (matriz intrínseca e coeficientes de distorção) e eu quero saber a posição da câmera conhecendo alguns pontos 3d e seus pontos correspondentes na imagem (2d pontos).

Eu sei dissocv::solvePnP poderia me ajudar, e depois de leristo eisto Eu entendo que eu as saídas de solvePnPrvec etvec são a rotação e a translação do objeto no sistema de coordenadas da câmera.

Então eu preciso descobrir a rotação / tradução da câmera no sistema de coordenadas mundial.

Nos links acima, parece que o código é direto, em 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)

Eu não sei python / numpy stuffs (estou usando C + +), mas isso não faz muito sentido para mim:

rvec, tvec saída de solvePnP são matriz 3x1, 3 elementos vetorescv2.Rodrigues (rvec) é uma matriz 3x3cv2.Rodrigues (rvec) [0] é uma matriz 3x1, 3 elementos vetoriaiscameraPosition é uma multiplicação de matriz 3x1 * 1x3 que é uma matriz 3x3. Como posso usar isso em OpenGL com simplesglTranslatef eglRotate chama?

questionAnswers(2)

yourAnswerToTheQuestion