В OpenCV я использую плату Charuco, откалибровал камеру и использую SolvePnP для получения rvec и tvec. (аналогично образцу кода). Я использую стационарную доску с камерой на круговой установке, вращающейся вокруг доски. Я новичок в этом, поэтому, пожалуйста, потерпите меня, если мне не хватает чего-то простого.
Я понимаю, что могу использовать Rodrigues (), чтобы получить матрицу вращения 3x3 для ориентации платы из rvec, и что я могу преобразовать значение tvec в мировые координаты с помощью -R.t () * tvec (в c ++).
Однако, насколько я понимаю, это вращение 3x3 R дает ориентацию платы по отношению к камере, так что это не совсем то, что нужно. Мне нужен поворот самой камеры, который смещен от R на (я думаю) угол между tvec и осью z в пространстве камеры. (поскольку камера не всегда указывает на исходную точку платы, но всегда направлена вниз по оси Z в пространстве камеры). Это верно?
Как мне найти дополнительное смещение поворота и преобразовать его в матрицу поворота 3x3, которую я могу объединить с R, чтобы получить фактическую ориентацию камеры?
Спасибо!