Дело такое: дан некий квадрат, угол поворота которого надо определить по фотографии.
Делаю его снимок в нулевом положении, нахожу координаты углов, дополняю нулями по оси Z и записываю их в массив base3d. Затем получаю видеопоток с камеры, распознаю на нём этот квадрат и нахожу его углы. Углы находятся хорошо, координаты колбасит всего на пару пикселей.
Дальше всё это скармливаю в solvePnP:
rvec, tvec = cv2.solvePnP(base3d, corners, camera, np.float32([0,0,0,0]))
А вот rvec (вектор поворота), получаемый на выходе, колбасит очень сильно и в каких-то случаных направлениях. ЧЯДНТ?
UPD: Вобщем ясно, это я накосячил как всегда. В этот раз с матрицей калибровки камеры.