如何正确使用 cvResize/resize?
我无法将 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 中的一个错误。这是一个还是我错误地使用了这个功能?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此行是不必要的 -
resize
将分配目标Mat
以使其适合,因此Mat bigWarpedImg
就可以了。不确定调整大小 - 我总是使用
resize
的形式,但从未注意到这种行为。我想说这是一个错误,但从文档来看它不应该这样。this line is unneccessary -
resize
will allocate the targetMat
to make it fit, soMat bigWarpedImg
would be fine.Not sure about the resizing - I always use the
form of
resize
and never noticed such behaviour. I'd say it's a bug though, from the documentation it shouldn't act like that.这可能是因为您使用的是最近插值。尝试更好的(我认为是双三次的)。
It could be because you're using nearest interpolation. Try the better ones (I think bicubic).