如何正确使用cvResize / resize?

时间:2011-01-22 19:24:34

标签: image-processing opencv image-resizing

我无法将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 个答案:

答案 0 :(得分:2)

Mat bigWarpedImg = Mat(120,120,CV_8UC1);

此行是必需的 - resize会分配目标Mat以使其合适,因此Mat bigWarpedImg会没问题。

不确定调整大小 - 我总是使用

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

resize的形式,从未注意到这种行为。我会说这是一个错误,但从文档中它不应该那样。

答案 1 :(得分:0)

可能是因为你正在使用最近的插值。尝试更好的(我认为是双重的)。