Как правильно использовать cvResize / resize? - PullRequest
0 голосов
/ 22 января 2011

У меня проблемы с изменением размера изображения 6x6 до 120x120.Похоже, что измененное изображение несколько смещено на 1 пиксель.Это происходит с cvResize и с cv :: resize .Мой код выглядит так:

warpPerspective(greyImg, warpedImg, homography, Size(6, 6));
Mat bigWarpedImg = Mat(120,120,CV_8UC1);
resize(warpedImg, bigWarpedImg, Size(0,0), 20, 20, INTER_NEAREST);

warpedImg выглядит следующим образом (я изменил его размер с помощью gimp, чтобы его было легче распознать): http://picasaweb.google.com/103165673068768416583/Opencv#5565090881969794706

bigWarpedImg выглядит следующим образом: http://picasaweb.google.com/103165673068768416583/Opencv#5565090880773608210

Как вы можете видеть, в bigWarpedImg левая и верхняя границы слишком малы, тогда как правая и нижняя границы слишком толстые.Похоже, ошибка в OpenCV.Это одна или я неправильно использую эту функцию?

Ответы [ 2 ]

2 голосов
/ 23 января 2011
Mat bigWarpedImg = Mat(120,120,CV_8UC1);

эта строка не нужна - resize выделит цель Mat, чтобы она соответствовала, поэтому Mat bigWarpedImg будет хорошо.

Не уверен насчет изменения размера - я всегда использую

resize(warpedImg, bigWarpedImg, Size(120,120), 0, 0, INTER_NEAREST);

форма resize и никогда не замечал такого поведения.Я бы сказал, что это ошибка, из документации она не должна так себя вести.

0 голосов
/ 24 января 2011

Это может быть потому, что вы используете ближайшую интерполяцию. Попробуйте лучшие (я думаю, бикубические).

...