RinOS 16 Жалоба Опубликовано August 19, 2009 Всем привет! В общем нашел такую интересную функцию 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); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 19, 2009 Спасибо за примерчик Функция и правда может быть довольно полезной, при создании интересных видеоэффектов. Посмотрел доки, попробую рассказать что понял. Назначение функции: Каждому пикселю исходной картинки с координатами (x,y), ставится в соответствие пиксель результирующего изображения с координатами (mapx(x,y),mapy(x,y)). В результате получаем искривленное произвольным образом изображение или перемешанный набор пикселей. Так как тип элемента (mapx(x,y),mapy(x,y)) - 32fC1, то для получения значения результирующего пикселя используется интерполяция (у Вас она линейная). Последний аргумент функции - цвет заполнения областей, которые, в результате выполненного преобразования остались незатронутыми. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alexxey593 0 Жалоба Опубликовано November 10, 2009 Как можно исказить рисунок по типу фильтра liquify в фотошопе? Аффинные преобразования и перспективная трансформация дают слишком мало возможностей (или просто я не умею пользоваться). Хочется, чтобы можно было растянуть улыбку, увеличить уши, например... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 10, 2009 Как можно исказить рисунок по типу фильтра liquify в фотошопе? Аффинные преобразования и перспективная трансформация дают слишком мало возможностей (или просто я не умею пользоваться). Хочется, чтобы можно было растянуть улыбку, увеличить уши, например... Можно здесь посмотреть: http://www.compvision.ru/forum/index.php?showtopic=116 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alexxey593 0 Жалоба Опубликовано November 11, 2009 Спасибо, посмотрю. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах