Я использую solvePnPRansac, чтобы найти текстурированный объект и получить позу камеры.Я ссылался на следующие посты ( вопрос Амартина вопрос b_m и в первую очередь вопрос nkint , который объясняет код, который я использую для преобразования r и t в позу камеры/ вращение.
Мои векторы t и r, полученные с помощью solvePnP, являются правильными и возвращают хорошее совпадение пикселей, когда я использую cv.projectPoints для визуализации проецируемых обратно входов. Они отключены на 10-15 пикселей. Однако камераПоза в основном правильная, но на расстоянии 50-100 пикселей, что наводит меня на мысль, что с моим кодом что-то систематическое не так.
rot_matrix = cv2.Rodrigues(r)[0]
pose = -np.matrix(rot_matrix).T * np.matrix(t)
Rt = np.c_[rot_matrix, t]
euler = cv2.decomposeProjectionMatrix(Rt)[-1]
При выводе позы и эйлера приблизительно правильные (модель отображается навид с камеры), но все смещено. Пример вывода (исходный вид, наложенный на новый вид) показан ниже. Как можно отладить это более эффективно? Большое спасибо!
![picture of original and new view](https://i.stack.imgur.com/nSVSJ.png)