Kalombyr
@Kalombyr

Как в OpenCV исправить перспективу камеры и получить ортогональную проекцию?

Здравствуйте!
Есть камера, установленная под углом (поворот, наклон по нескольким осям, сдвиг) к плоскости.
Нужно с этой плоскости считать угол поворота прямоугольника.
Сейчас делаю так:
1. Получаю кадр с камеры
2. Исправляю искажения объектива камеры (нашёл коэффициенты с помощью шахматной доски)
3. На картинке нахожу 4 метки, положение которых точно известно, с помощью getPerspectiveTransform и warpPerspective восстанавливаю перспективу.

Вот ПРИМЕРНО что получается:
5efafbae565f4718722644.png

Проблема в том, что когда нахожу стороны прямоугольника - угол между ними меньше 90 градусов (уверен, что в реале это прямоугольник и физически в нём углы ==90) !

Соответственно и угол поворота прямоугольника отличается от правильного. Угол между рёбрами скачет от 87 до 89, чем ближе прямоугольник к меткам (в левом верхнем углу картинки), тем точнее угол. Камера 8 Мегапикселей, разрешением максимальное, размер самого прямоугольника чуть ли не пол кадра, так что погрешность в пару пикселей тут не причём (пробовал кадр с камеры измерять в графическом редакторе - угол так же меньше 90).

Как я думаю, тут какие-то искажения от того, что как-то неправильно нахожу матрицу перспективы, либо нужно что-то ещё применять... Подскажите, пожалуйста, куда смотреть и как правильно сделать?
  • Вопрос задан
  • 399 просмотров
Решения вопроса 1
Kalombyr
@Kalombyr Автор вопроса
Извините, ложная тревога.
Не правильно считывал точки для коррекции перспективы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы