OpenCV 학습 노트 07-스크롤 바 로 그림 크기 조절

연습:스크롤 바 를 통 해 그림 의 크기 를 조절 합 니 다.
이 연습 이 실현 하고 자 하 는 기능 은 스크롤 바 를 제어 하여 그림 의 크기 를 조절 하 는 것 입 니 다.크기 가 너무 작 으 면 스크롤 바 를 표시 할 수 없 기 때문에 스크롤 바 를 제어 하여 길이 와 너 비 를 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;
}

좋은 웹페이지 즐겨찾기