OpenCV学习笔记07--用滚动条控制图片缩放

来源:互联网 发布:淘宝发布二手商品 编辑:程序博客网 时间:2024/05/29 02:09

练习:通过滚动条控制图片的缩放

这个练习要实现的功能是通过控制滚动条来控制图片的缩放,由于如果缩放的太小不足以显示出滚动条,就不能对其进行调整了,因此我们计划实现控制滚动条使长度和宽度缩小2倍,4倍。

我们使用cvPyrDown进行缩放,输出图像的长度和宽度只能是输入图像的一半。我们如果要缩放二倍以上,就必须使用两次以上cvPyrDown,所以只能缩小2倍,4倍,8倍。。。

在练习中使用的都是之前学到的函数,通过构造两个图像结构,通过循环控制其缩小二倍以上,具体代码如下:

 

 

#include "stdafx.h"#include "cv.h"#include "highgui.h"int g_slide = 0;IplImage *src1,*src2;IplImage* img = cvLoadImage("D:\\2.jpg");void dragSize(int g_slide){int i = g_slide+1;src1 = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);src2 = cvCreateImage(cvSize(img->width, img->height), img->depth, img->nChannels);cvCopy(img, src1);cvCopy(img, src2);for (; i > 1; i--){if (i % 2 == 0){        src2 = cvCreateImage(cvSize(src1->width / 2, src1->height / 2), src1->depth, src1->nChannels);        cvPyrDown(src1, src2);}if (i % 2 != 0){src1 = cvCreateImage(cvSize(src2->width / 2, src2->height / 2), src2->depth, src2->nChannels);cvPyrDown(src2, src1);}}cvShowImage("test", src2);}int _tmain(int argc, _TCHAR* argv[]){cvNamedWindow("test", 1);cvCreateTrackbar("drag", "test", &g_slide, 2,dragSize);src1 = cvCreateImage(cvSize(img->width/2, img->height/2), img->depth, img->nChannels);cvPyrDown(img, src1);cvShowImage("test",img);cvWaitKey(0);cvReleaseImage(&src1);cvReleaseImage(&src2);cvDestroyWindow("test");return 0;}

0 0
原创粉丝点击