Перейти к содержимому
Compvision.ru
RinOS

Интересная функция cvRemap

Recommended Posts

Всем привет! В общем нашел такую интересную функцию cvRemap, но что то особо не понял ка она действует, хотя примерчик накатал :)

	cvNamedWindow("MyWnd", CV_WINDOW_AUTOSIZE);

cvNamedWindow("MyWnd2", CV_WINDOW_AUTOSIZE);

IplImage *src = cvLoadImage("1.jpg");

IplImage *dst = cvCreateImage(cvSize(src->width, src->height), src->depth, src->nChannels);

IplImage *mapx = cvCreateImage(cvSize(src->width, src->height), IPL_DEPTH_32F, 1);

IplImage *mapy = cvCreateImage(cvSize(src->width, src->height), IPL_DEPTH_32F, 1);

cvZero(mapx);

cvZero(mapy);

for (int i = 0; i < mapx->width; i++) {

for (int j = 0; j < mapx->height; j++) {

cvSetReal2D(mapx, j, i, i+sin(j));

}

}

for (int i = 0; i < mapy->width; i++) {

for (int j = 0; j < mapy->height; j++) {

cvSetReal2D(mapy, j, i, j+sin(i));

}

}

cvRemap(src, dst, mapx, mapy, CV_INTER_LINEAR, cvScalarAll(0));

cvShowImage("MyWnd", src);

cvShowImage("MyWnd2", dst);

cvWaitKey(0);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за примерчик :)

Функция и правда может быть довольно полезной, при создании интересных видеоэффектов.

Посмотрел доки, попробую рассказать что понял.

Назначение функции:

Каждому пикселю исходной картинки с координатами (x,y), ставится в соответствие пиксель

результирующего изображения с координатами (mapx(x,y),mapy(x,y)).

В результате получаем искривленное произвольным образом изображение или перемешанный набор пикселей.

Так как тип элемента (mapx(x,y),mapy(x,y)) - 32fC1, то

для получения значения результирующего пикселя используется интерполяция (у Вас она линейная).

Последний аргумент функции - цвет заполнения областей, которые, в результате выполненного преобразования остались

незатронутыми.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как можно исказить рисунок по типу фильтра liquify в фотошопе? Аффинные преобразования и перспективная трансформация дают слишком мало возможностей (или просто я не умею пользоваться). Хочется, чтобы можно было растянуть улыбку, увеличить уши, например...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Как можно исказить рисунок по типу фильтра liquify в фотошопе? Аффинные преобразования и перспективная трансформация дают слишком мало возможностей (или просто я не умею пользоваться). Хочется, чтобы можно было растянуть улыбку, увеличить уши, например...

Можно здесь посмотреть: http://www.compvision.ru/forum/index.php?showtopic=116

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×