'OpenCV'에 해당되는 글 1건

  1. 2013.03.26 cvGetQuadrangleSubPix
posted by photalks 2013. 3. 26. 12:42

https://t1.daumcdn.net/cfile/tistory/1843ED394E7161831A


사전적 의미 - quadrangles : 완전사각형


int angle = 45;

float m[6];

IplImage *src_img = 0, *dst_img = 0;

CvMat M;


// (1)이미지의 읽어들여, 출력용 이미지 영역의 확보를 행한다

src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);


dst_img = cvCloneImage (src_img);

// (2)회전을 위한 행렬(아핀 행렬) 요소를 설정해,CvMat 행렬 M(을)를 초기화한다

m[0] = (float) (cos (angle * CV_PI / 180.));

m[1] = (float) (-sin (angle * CV_PI / 180.));

m[2] = src_img->width * 0.5;

m[3] = -m[1];

m[4] = m[0];

m[5] = src_img->height * 0.5;


cvInitMatHeader (&M, 2, 3, CV_32FC1, m, CV_AUTOSTEP);

// m[2]와 m[5] 중심으로 회전시킨다.

// (3)지정된 회전 행렬에 의해,GetQuadrangleSubPix(을)를 이용해 이미지 전체를 회전시킨다

cvGetQuadrangleSubPix (src_img, dst_img, &M);


이미지를 회전시키는 것은, 출력 이미지(dst_img)안의 각 픽셀치를 입력 이미지중의 픽셀로부터

이하의 식에 따라서 샘플링 하는 일로, 결정하는 것이기도 하다. dst(x, y) = src( A11x' + A12y' + b1, A21x' + A22y' + b2 )

x' = x - ( dst_img->width - 1 ) * 0.5

y' = y - ( dst_img->height - 1 ) * 0.5

// (4)결과를 표시한다

윈도우를 생성해, 입력 이미지, 결과 이미지를 표시해, 무엇인가 키가 밀릴 때까지 기다린다