resize用法matlab,opencv的resize和matlab的imresize函数的计算
在用c++代碼復(fù)現(xiàn)matlab代碼時(shí),遇到兩者resize函數(shù)的結(jié)果不相同的問題。
opencv:
resize(image1, reTmp, Size(50, 50), 0, 0, cv::INTER_LINEAR);
matlab:
tmp=imresize(img,[50 50],'bilinear','AntiAliasing',false);
以一張500×396的彩色圖片為例,resize到(50,50):
matlab? imresize代碼:
img=imread('image/cluo.jpg');
img=single(img);for i=1:10fprintf('%.6f',img(1,i,1));
end
fprintf('\n');
tmp=imresize(img,[50 50],'bilinear','AntiAliasing',false);for i=1:10fprintf('%.6f',tmp(1,i,1));
end
c++ resize代碼:
#include #include
using namespacecv;using namespacestd;voidmain()
{
Mat image= imread("cluo.jpg");
Mat image1(image.rows, image.cols, CV_32FC3);for (int i = 0; i < image.rows; i++)for (int j = 0; j < image.cols; j++)
{
image1.at(i, j)[2] = image.at(i, j)[0];
image1.at(i, j)[1] = image.at(i, j)[1];
image1.at(i, j)[0] = image.at(i, j)[2];
}//打印輸出resize前r通道前10個(gè)像素點(diǎn)的坐標(biāo)
for (int i = 0; i < 10; i++)
printf("%.6f", image1.at(0, i)[0]);
printf("\n");
Mat reTmp;
resize(image1, reTmp, Size(50, 50), 0, 0, cv::INTER_LINEAR);//resize(image1, reTmp, Size(50, 50), 0, 0, cv::INTER_NEAREST);//打印輸出resize后r通道前10個(gè)像素點(diǎn)的坐標(biāo)
for (int i = 0; i < 10; i++)
printf("%f", reTmp.at(0, i)[0]);
printf("\n");
system("pause");
}
結(jié)果比較:
結(jié)果基本相同
matlab中默認(rèn)的? ? ?tmp=imresize(img,[50 50],'bilinear');? ? 函數(shù)是打開了抗鋸齒? ?結(jié)果和opencv中的INTER_LINEAR不相同
matlab? 和? opencv中? nearest? 方式的結(jié)果比較:
c++: resize(image1, reTmp, Size(50, 50), 0, 0, cv::INTER_NEAREST);
matlab:? ?tmp=imresize(img,[50 50],'nearest');
matlab:? ?tmp=imresize(img,[50 50],'nearest','AntiAliasing',false);
結(jié)果不相同
總結(jié)
以上是生活随笔為你收集整理的resize用法matlab,opencv的resize和matlab的imresize函数的计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery修改图片src
- 下一篇: matlab人脸追踪,求大神帮助我这个菜