2016-04-30 9 views
5

Mam współrzędne 3D obiektu i chcę uzyskać jego współrzędne w płaszczyźnie 2D kamery. Mam już skalibrowałem kamerę przy użyciu cv::calibrateCamera, więc mam matrycę kamery i distortionCoeffs.Projekt OpenCV Współrzędne 3D do współrzędnych kamery 2D

Do rzutowania współrzędnych 3D na współrzędne 2d używam cv::projectPoints. Documentation mówi:

void projectPoints (InputArray objectPoints, InputArray rvec, InputArray tvec, InputArray cameraMatrix, InputArray distCoeffs, OutputArray imagePoints, OutputArray jakobian = noArray (), podwójne aspectRatio = 0)

Jak uzyskać rvec/tvec i czy moje podejście jest właściwe? daje mi rvecs i tvecs, ale są one dla każdego obrazu szachownicy wejściowej i myślę, że są to obrót i tłumaczenie szachownicy, a nie aparatu.

+0

Opisują one obrót i translację kamery względem szachownicy. Jeśli znasz rotację i tłumaczenie szachownicy w stosunku do twojego układu współrzędnych świata, możesz łatwo obliczyć zewnętrzną stronę swojego aparatu w światowym układzie współrzędnych. – sietschie

+0

Ale dlaczego potrzebuję tych matryc translacyjnych/obrotowych? Czy powinien działać tylko z matrycą kamery (= projekcją?)? – black

+0

Macierz kamery zawiera tylko parametry [wewnętrzne] (https://en.wikipedia.org/wiki/Camera_resectioning#Intrinsic_parameters), takie jak ogniskowa, a nie [zewnętrzne] (https://en.wikipedia.org/wiki/ Camera_resectioning # Extrinsic_parameters) Parametry będące obrotem i translacją kamery. – sietschie

Odpowiedz

Powiązane problemy