前边一篇说opencv中缩放仅有仿射变换一种,查证才知道是错的,opencv中也有类似MATLAB中的imresize的函数,即是c++版的resize(当然还有图像金字塔方法)
其原型为void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )。它的功能与MATLAB中的imresize相似,都可以将图像重新变为任意不为零尺寸的图像。实现代码如下:
#include<opencv2\opencv.hpp>
#include<CoreWindow.h>
#include<tchar.h>
using namespace cv;
using namespace std;
int main(void)
{
Mat img_ori = imread("..\\lena.bmp", 1);
if (img_ori.empty())
{
MessageBox(NULL,_T( "load image error"), _T("load image"), 0);
return -1;
}
namedWindow("original image", 1);
imshow("original image", img_ori);
Size dsize = Size(640, 480);//注意这里的640和480分别指图像的宽高,而imresize中的对应参数分别指行列
Mat img_resize = Mat(dsize, img_ori.type());
resize(img_ori, img_resize, dsize);
namedWindow("resize window", 1);
imshow("resize window", img_resize);
waitKey();
return 0;
}