// image_pyramid.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <string> #include <iostream> using namespace std; #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include <math.h> #include <stdlib.h> #include <stdio.h> #pragma comment(lib,"opencv_core2410d.lib") #pragma comment(lib,"opencv_highgui2410d.lib") #pragma comment(lib,"opencv_imgproc2410d.lib") using namespace cv; /// 全局变量 Mat src, dst, tmp; char* window_name = "Pyramids Demo"; /** * @函数 main */ int main( int argc, char** argv ) { /// 指示说明 printf( " Zoom In-Out demo " ); printf( "------------------ " ); printf( " * [u] -> Zoom in " ); printf( " * [d] -> Zoom out " ); printf( " * [ESC] -> Close program " ); /// 测试图像 - 尺寸必须能被 2^{n} 整除 string image_name; cout<<"input image name:"<<endl; cin>>image_name; src = imread( image_name); if( !src.data ) { printf(" No data! -- Exiting the program "); return -1; } tmp = src; dst = tmp; /// 创建显示窗口 namedWindow( window_name, CV_WINDOW_AUTOSIZE ); imshow( window_name, dst ); /// 循环 while( true ) { int c; c = waitKey(10); if( (char)c == 27 ) { break; } if( (char)c == 'u' ) { pyrUp( tmp, dst, Size( tmp.cols*2, tmp.rows*2 ) ); printf( "** Zoom In: Image x 2 " ); } else if( (char)c == 'd' ) { pyrDown( tmp, dst, Size( tmp.cols/2, tmp.rows/2 ) ); printf( "** Zoom Out: Image / 2 " ); } imshow( window_name, dst ); tmp = dst; } return 0; } //缩小,再放大就模糊了,什么情况?