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)결과를 표시한다
윈도우를 생성해, 입력 이미지, 결과 이미지를 표시해, 무엇인가 키가 밀릴 때까지 기다린다