Есть фото с камеры (откалибрована средствами OpenCV) предмета.
Могу найти на нём лишь 3 точки (без вариантов). Назовём это "оригинальной" позицией.
Знаю, какой угол должен быть в реальности, если провести отрезки между ними, а так же расстояния этих отрезков.
Потом предмет поворачивают и перемещают. Мне нужно найти на сколько переместили и на сколько повернули. Если это всё происходит в одной плоскости, то справляется нормально и estimateAffine2D.
Но если, к примеру, угол предмета чуть-чуть поднять вверх, то вычисления уже не точные.
По идее, помог бы perspectiveTransform, для восстановления перспективы, но ему нужно 4 точки, а у меня есть только 3.
Подскажите, пожалуйста, есть ли в OpenCV какие-либо встроенные средства или может быть алгоритм какой?
Сейчас смотрю на solveP3P, но не могу придумать, что потом делать с векторами переноса и поворота.
Перспективное преобразование - это матрица 4x4. Следовательно, чтобы уравнение с такой матрицей однозначно решалось, нужно задать 4 точки.
"Обмануть" математику вам вряд ли удастся, так как ваше знание об углах и расстояниях между имеющимися у вас точками вы уже использовали (потому что они, грубо говоря, хранятся в координатах этих трех точек).