Pozycja kamery we współrzędnych świata z cv :: resolvePnP

Mam skalibrowaną kamerę (macierz wewnętrzna i współczynniki zniekształceń) i chcę znać położenie kamery znając niektóre punkty 3d i odpowiadające im punkty na obrazie (punkty 2d).

wiem tocv::solvePnP mógł mi pomóc i po przeczytaniuto ito Rozumiem, że ja wyjściami resolPnPrvec itvec to obrót i translacja obiektu w układzie współrzędnych kamery.

Muszę więc sprawdzić obrót / translację kamery w światowym układzie współrzędnych.

Z powyższych linków wynika, że ​​kod jest prosty, w Pythonie:

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)

Nie znam rzeczy python / numpy (używam C ++), ale to nie ma dla mnie większego sensu:

rvec, tvec wyjście z resolvePnP to macierz 3x1, 3 wektory elementówcv2.Rodrigues (rvec) to macierz 3x3cv2.Rodrigues (rvec) [0] to macierz 3x1, 3 wektory elementówcameraPosition to mnożenie macierzy 3x1 * 1x3, które jest macierzą .. 3x3. jak mogę to wykorzystać w opengl z prostymglTranslatef iglRotate połączenia?

questionAnswers(2)

yourAnswerToTheQuestion