#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
using namespace cv ;
/// 全局变量
Mat src , dst , tmp ;
char * window_name = "Pyramids Demo" ;
/**
* @函数 main
*/
int main ( int argc , char ** argv )
{
/// 指示说明
printf ( " \n Zoom In-Out demo \n " );
printf ( "------------------ \n " );
printf ( " * [u] -> Zoom in \n " );
printf ( " * [d] -> Zoom out \n " );
printf ( " * [ESC] -> Close program \n \n " );
/// 测试图像 - 尺寸必须能被 2^{n} 整除
src = imread ( "../images/chicky_512.jpg" );
if ( ! src . data )
{ printf ( " No data! -- Exiting the program \n " );
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 \n " );
}
else if ( ( char ) c == 'd' )
{ pyrDown ( tmp , dst , Size ( tmp . cols / 2 , tmp . rows / 2 ) );
printf ( "** Zoom Out: Image / 2 \n " );
}
imshow ( window_name , dst );
tmp = dst ;
}
return 0 ;
}
void pyrUp ( const Mat & src , Mat & dst , const Size& dstsize=Size() )
void pyrDown ( const Mat & src , Mat & dst , const Size& dstsize=Size() )