一个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);
如下得到了最近邻插值的正确答案。
参考:c++ opencv resize遇到的问题 - 巨鹿王十二 - 博客园今天调试程序,发现c++ opencv resize调用时存在的一个坑,赶紧填起来。 从resize定义来看: CV_EXPORTS_W void resize( InputArray src, Ouhttps://www.cnblogs.com/juluwangshier/p/13409615.html
有网友拿大图比较各种插值缩放的效果,可能本身已经出错了,但是因图比较大也不容易看出来差异,这里专门用一个棋盘格图做个比较,效果明显。
大家遇到此坑及时绕开。