一个160*120的单像素棋盘格图src,如下
[255,0,255,0,255,0.......]
[0,255,0,255,0,255.......]
......

使用OpenCV的resize按最近邻插值的方式放大32倍,生成棋盘格图:
cv::resize(src, dst, cv::Size(160 * 32, 120 * 32), INTER_NEAREST);
得到的结果却是这样的:

分析了很久又做了上述实验,发现这个函数对于函数的缺省参数也进行填写时才能得到正确的结果。
cv::resize(src, dst, cv::Size(160 * 32, 120 * 32), 0.0, 0.0, INTER_NEAREST);
如下得到了最近邻插值的正确答案。

有网友拿大图比较各种插值缩放的效果,可能本身已经出错了,但是因图比较大也不容易看出来差异,这里专门用一个棋盘格图做个比较,效果明显。
大家遇到此坑及时绕开。
博客作者发现使用OpenCV的resize函数进行图像放大时,不指定缺省参数会导致结果错误。通过对比实验,指出只有在明确提供缩放因子时,才能得到预期的最近邻插值效果。文章提醒开发者注意此问题,避免踩坑。
https://www.cnblogs.com/juluwangshier/p/13409615.html
893

被折叠的 条评论
为什么被折叠?



