本次使用opencv中的API函数resize()和pyrup()和pyrdown()进行图像尺寸的放大和缩小。
程序的功能说明如下:
按键的功能 按下1键:用resize()把图片放大
按下2键 :用resize()把图片缩小
按下3键: 用pyrup()把图片放大
按下4键:用pyrdown()把图片缩小
#include<opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; Mat src, temp, dst; static void ShowHelpText(); int main() { //显示原图 src = imread("D:/meinv.jpg"); namedWindow("原图", CV_WINDOW_AUTOSIZE); imshow("原图", src); //参数赋值 temp = src; dst = temp; //按键的功能 按下1键:用resize()把图片放大 // 按下2键 :用resize()把图片缩小 //按下3键: 用pyrup()把图片放大 //按下4键:用pyrdown()把图片缩小 int key = 0; while (1) { key = waitKey(9); //读取键值 switch (key) { case 27: //按下ESC,退出程序 return 0; break; case '1': resize(temp, dst, Size(temp.cols * 2, temp.rows * 2)); printf("按键1按下,将图片放大 "); break; case '2': resize(temp, dst, Size(temp.cols / 2, temp.rows / 2)); printf("按键2按下,将图片缩小 "); break; case '3': pyrUp(temp, dst, Size(temp.cols * 2, temp.rows * 2)); printf("按键3按下,将图片放大 "); break; case '4': pyrDown(temp, dst, Size(temp.cols / 2, temp.rows / 2)); printf("按键4按下,将图片缩小 "); break; } imshow("原图", dst); temp = dst; } return 0; }
由于放大和缩小变换是在上一幅图像的操作基础上操作的,所以图像会变得越来越模糊。
显示效果: