滑动条缩放图片

来源:互联网 发布:最新网络潮语 编辑:程序博客网 时间:2024/06/10 01:17


#include "opencv/cv.h"#include "opencv/highgui.h"#include <stdio.h>int slider_position = 0;//滚动条的位置变量double  fScale = 1.0;//缩放比例 CvSize imageSize0; //原始图像尺寸CvSize imageSize1;//目标图像尺寸IplImage* dst_image = NULL;IplImage* src_image = NULL;void onTrackbarSlider(int pos);//回调函数int main(int argc,char** argv){//读取文件src_image = cvLoadImage(argv[1]);//初始化图像大小imageSize0.width = src_image->width;imageSize0.height = src_image->height;//创建窗口cvNamedWindow("Image",1);//在指定窗口显示图像cvShowImage("Image",src_image);cvCreateTrackbar("Scale","Image",&slider_position,120,onTrackbarSlider);//等待ESC按键事件while(1){if(cvWaitKey(15) == 27) break;}//摧毁窗口并释放内存cvReleaseImage(&src_image);cvReleaseImage(&dst_image);cvDestroyWindow("Image");return 0;}void onTrackbarSlider(int pos)//回调函数{//由pos(0~120)映射到fScale(2~8 )fScale = pos /20.0+ 2;//计算目标图像的大小imageSize1.width = imageSize0.width * fScale;imageSize1.height =imageSize0.height * fScale;//释放资源并重新创建图像cvReleaseImage(&dst_image);dst_image = cvCreateImage(imageSize1,src_image->depth,src_image->nChannels);//缩放图像cvResize(src_image,dst_image,CV_INTER_AREA);//在指定窗口显示图像cvShowImage("Image",dst_image);printf("TrackbarPos = %d\n",pos);printf("fScale = %.1f\n",fScale);}


效果图:




























0 0
原创粉丝点击