더북(TheBook)

코드 8-3 영상의 전단 변환 [ch08/affine]

01    void affine_shear()
02    {
03        Mat src = imread("tekapo.bmp");
04     
05        if (src.empty()) {
06            cerr << "Image load failed!" << endl;
07            return;
08        }
09     
10        double mx = 0.3;
11        Mat M = Mat_<double>({ 2, 3 }, { 1, mx, 0, 0, 1, 0 });
12     
13        Mat dst;
14        warpAffine(src, dst, M, Size(cvRound(src.cols + src.rows * mx), src.rows));
15     
16        imshow("src", src);
17        imshow("dst", dst);
18     
19        waitKey();
20        destroyAllWindows();
21    }

 

• 10~11행 가로 방향으로 밀림 정도를 0.3으로 설정한 전단 변환 행렬 M을 생성합니다.

• 14행 행렬 M을 이용하여 어파인 변환을 수행합니다. 전단 변환에 의해 입력 영상의 일부가 잘리지 않도록 결과 영상 가로 크기를 cvRound(src.cols + src.rows * mx) 형태로 지정하였습니다.