Kalombyr
@Kalombyr

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы