最近在自学opencv, 在学习了一些简单的操作函数之后,打算进行一些简单的练习,缩放图片,运用cvPyrDown函数,循环调用,进行2倍的缩放。
// wrok_2_5.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
int g_slider = 0;
IplImage* src1, *src2;
IplImage* img = cvLoadImage("test.jpg");
void dragSize(int g_slider)
{
int i = g_slider + 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_slider, 2, dragSize);
//src1 = cvCreateImage(cvSize(img->width / 2, img->height / 2), img->depth, img->nChannels);
//cvPyrDown(img, src1);
cvShowImage("test", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImage(&src1);
cvReleaseImage(&src2);
cvDestroyWindow("test");
return 0;
}