이미지 회전하기



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *srcImage = cvLoadImage("D:/study/testimage3.jpg"-1);
    IplImage *resultImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
 
 
    //cv2DRotationMatrix(회전중심좌표, 회전각도, 스케일, 생성될 2x3 변환행렬) : 2x3 변환행렬 생성
    const double angle = 45//시계반대방향으로 45도 회전
    const double scale = 1;
    CvMat *matrix = cvCreateMat(23, CV_32FC1);
    cv2DRotationMatrix(cvPoint2D32f(srcImage->width / 2, srcImage->height / 2), angle, scale, matrix);
 
    //cvWarpAffine(원본이미지, 결과이미지, 2x3변환행렬, flag, 배경색) : 변환행렬을 영상에 적용
    /*
        flag
        CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS : 양선형 보간법
        CV_WARP_INVERSE_MAP : 역방향 사상 보간법
    */
    cvWarpAffine(srcImage, resultImage, matrix, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS, cvScalarAll(0));
    
 
    cvNamedWindow("original", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("rotation", CV_WINDOW_AUTOSIZE);
 
    cvShowImage("original", srcImage);
    cvShowImage("rotation", resultImage);
 
    cvWaitKey(0);
 
    cvReleaseImage(&srcImage);
    cvReleaseImage(&resultImage);
}
cs



결과




+ Recent posts