Реализация инструмента warp / liquify в C ++ - PullRequest
3 голосов
/ 23 октября 2011

Я ищу способ деформировать изображение, похожее на то, как работает инструмент liquify / IWarp в Photoshop / Gimp.

Я хотел бы использовать его для перемещения нескольких точек на изображении, чтобы оно выглядело шире, чем было изначально.

У кого-нибудь есть идеи относительно библиотек, которые можно было бы использовать для этого? В настоящее время я использую OpenCV в том же проекте, так что, если есть способ, который будет проще, но я открыт для всего, что действительно

Спасибо.

РЕДАКТИРОВАТЬ: Вот пример того, что я хочу сделать http://i.imgur.com/wMOzq.png Все, что я там сделал, это вытащил несколько точек в сторону, и это то, что я собираюсь сделать из моего приложения

Ответы [ 3 ]

2 голосов
/ 26 октября 2011

OpenCV remap может сделать это. Вам нужно только предоставить карты смещений x и y. Я бы посоветовал вам создать карту смещения напрямую, если вы сообразительны, и это было бы хорошо для манипуляций с мазком, аналогичных разжижению в Photoshop. Подход карты деформации сетки и разреженной точки является еще одним вариантом, но по существу вычисляет карту смещения на основе интерполяции.

2 голосов
/ 17 августа 2012

Возможно, вы захотите взглянуть на http://code.google.com/p/imgwarp-opencv/. Эта библиотека, кажется, именно то, что вам нужно: искажение изображения на основе разреженной сетки.

Другой вариант, конечно, генерировать смещениясами и используйте функцию cv :: Remap () OpenCV.

2 голосов
/ 23 октября 2011

Из этого поиска 'источник оператора деформации изображения c ++' я получаю:

..... Добавлена ​​функция 'CImg :: [get_] warp ()', которая может деформировать изображение, используя деформацию... Добавлена ​​функция 'CImg :: save_cpp ()', позволяющая сохранить изображение непосредственно в виде исходного кода C / C ++....

тогда CImg может хорошо для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...