[cpp] view plain copy
  1. #include "opencv/cv.h"  
  2. #include "opencv/highgui.h"  
  3. #include <stdio.h>  
  4.   
  5. int slider_position = 0;    //滚动条的位置变量  
  6. double  fScale = 1.0;       //缩放比例   
  7.   
  8. CvSize imageSize0;      //原始图像尺寸      
  9. CvSize imageSize1;      //目标图像尺寸  
  10.   
  11. IplImage* dst_image = NULL;  
  12. IplImage* src_image = NULL;  
  13.   
  14. void onTrackbarSlider(int pos);//回调函数  
  15.   
  16.   
  17. int main(int argc,char** argv)  
  18. {  
  19.     //读取文件  
  20.     src_image = cvLoadImage(argv[1]);  
  21.       
  22.     //初始化图像大小  
  23.     imageSize0.width = src_image->width;  
  24.     imageSize0.height = src_image->height;  
  25.       
  26.         //创建窗口  
  27.     cvNamedWindow("Image",1);  
  28.       
  29.         //在指定窗口显示图像  
  30.     cvShowImage("Image",src_image);  
  31.       
  32.     cvCreateTrackbar(  
  33.             "Scale",  
  34.             "Image",  
  35.             &slider_position,  
  36.             120,  
  37.             onTrackbarSlider  
  38.             );    
  39.       
  40.     //等待ESC按键事件  
  41.     while(1){  
  42.         if(cvWaitKey(15) == 27) break;  
  43.     }  
  44.   
  45.     //摧毁窗口并释放内存  
  46.     cvReleaseImage(&src_image);  
  47.     cvReleaseImage(&dst_image);  
  48.     cvDestroyWindow("Image");  
  49.   
  50.     return 0;  
  51. }  
  52.   
  53.   
  54. void onTrackbarSlider(int pos)//回调函数  
  55. {  
  56.     //由pos(0~120)映射到fScale(2~8 )  
  57.     fScale = pos /20.0+ 2;    
  58.       
  59.     //计算目标图像的大小  
  60.     imageSize1.width = imageSize0.width * fScale;  
  61.     imageSize1.height =imageSize0.height * fScale;    
  62.       
  63.     //释放资源并重新创建图像  
  64.     cvReleaseImage(&dst_image);  
  65.     dst_image = cvCreateImage(imageSize1,src_image->depth,src_image->nChannels);  
  66.       
  67.     //缩放图像  
  68.     cvResize(src_image,dst_image,CV_INTER_AREA);  
  69.       
  70.     //在指定窗口显示图像  
  71.     cvShowImage("Image",dst_image);  
  72.       
  73.     printf("TrackbarPos = %d\n",pos);  
  74.     printf("fScale = %.1f\n",fScale);  
  75.       
  76. }  


效果图:

滑动条缩放图片






[cpp] view plain copy
  1. #include "opencv/cv.h"  
  2. #include "opencv/highgui.h"  
  3. #include <stdio.h>  
  4.   
  5. int slider_position = 0;    //滚动条的位置变量  
  6. double  fScale = 1.0;       //缩放比例   
  7.   
  8. CvSize imageSize0;      //原始图像尺寸      
  9. CvSize imageSize1;      //目标图像尺寸  
  10.   
  11. IplImage* dst_image = NULL;  
  12. IplImage* src_image = NULL;  
  13.   
  14. void onTrackbarSlider(int pos);//回调函数  
  15.   
  16.   
  17. int main(int argc,char** argv)  
  18. {  
  19.     //读取文件  
  20.     src_image = cvLoadImage(argv[1]);  
  21.       
  22.     //初始化图像大小  
  23.     imageSize0.width = src_image->width;  
  24.     imageSize0.height = src_image->height;  
  25.       
  26.         //创建窗口  
  27.     cvNamedWindow("Image",1);  
  28.       
  29.         //在指定窗口显示图像  
  30.     cvShowImage("Image",src_image);  
  31.       
  32.     cvCreateTrackbar(  
  33.             "Scale",  
  34.             "Image",  
  35.             &slider_position,  
  36.             120,  
  37.             onTrackbarSlider  
  38.             );    
  39.       
  40.     //等待ESC按键事件  
  41.     while(1){  
  42.         if(cvWaitKey(15) == 27) break;  
  43.     }  
  44.   
  45.     //摧毁窗口并释放内存  
  46.     cvReleaseImage(&src_image);  
  47.     cvReleaseImage(&dst_image);  
  48.     cvDestroyWindow("Image");  
  49.   
  50.     return 0;  
  51. }  
  52.   
  53.   
  54. void onTrackbarSlider(int pos)//回调函数  
  55. {  
  56.     //由pos(0~120)映射到fScale(2~8 )  
  57.     fScale = pos /20.0+ 2;    
  58.       
  59.     //计算目标图像的大小  
  60.     imageSize1.width = imageSize0.width * fScale;  
  61.     imageSize1.height =imageSize0.height * fScale;    
  62.       
  63.     //释放资源并重新创建图像  
  64.     cvReleaseImage(&dst_image);  
  65.     dst_image = cvCreateImage(imageSize1,src_image->depth,src_image->nChannels);  
  66.       
  67.     //缩放图像  
  68.     cvResize(src_image,dst_image,CV_INTER_AREA);  
  69.       
  70.     //在指定窗口显示图像  
  71.     cvShowImage("Image",dst_image);  
  72.       
  73.     printf("TrackbarPos = %d\n",pos);  
  74.     printf("fScale = %.1f\n",fScale);  
  75.       
  76. }  


效果图:

滑动条缩放图片






相关文章: