Альтернатива opencv warpPerspective - PullRequest
1 голос
/ 27 мая 2019

Я использую функцию opencv warpPerspective (), чтобы деформировать найденный контур на изображении, чтобы найти контур, который я использую findContours ().

Это показано на этом изображении:

enter image description here

но функция warpPerspective () занимает больше времени для деформации до полного изображения, есть ли альтернатива этой функции для деформации объекта в изображении до полного изображения, как показано на рисунке. ИЛИ будет ли помощь в прохождении? Но это будет трудно сделать, чтобы я мог сократить время, которое занимает функция warpPerspective ().

1 Ответ

0 голосов
/ 28 мая 2019

Вы можете попробовать работать с вращением и переводом матриц (или ротопереводной матрицей, комбинацией обоих), которые могут деформировать изображение по вашему желанию.Функция warpPerspective () использует аналогичный подход, поэтому у вас будет возможность заглянуть внутрь функции.

Подход:

  1. Вы вычисляете матрицу,затем умножьте высоту и ширину исходного изображения, чтобы найти размеры выходного изображения.

  2. Просмотрите все пиксели исходного изображения и умножьте их (x, y) координаты на матрицу.R (матрица вращения / перемещения / рото-перевода), чтобы получить координаты на выходном изображении (xo, yo).

  3. Для каждой вычисленной координаты (xo, yo) назначьте значение изсоответствующая исходная координата изображения (x, y).

  4. Интерполировать, используя медианный фильтр / билинейный / бикубический / и т. д.В этом методе иногда могут оставаться пустые точки

Однако если вы работаете в Python, ваша реализация может работать даже медленнее, чем warpPerspective (), поэтому вы можете рассмотреть C ++.Другое дело, что OpenCV использует компилятор C ++, и я совершенно уверен, что реализация warpPerspective () в OpenCV очень эффективна.

Итак, я думаю, что вы можете обойти warpPerspective (), однако я не уверен, что вы можете сделать это быстрее, чем в OpenCV без каких-либо улучшений (таких как GPU, мощный процессор и т. Д.):)

Удачи!

...