仿射变换(给定的参数,以获得的变换矩阵)

来源:互联网 发布:旋转变换矩阵 编辑:程序博客网 时间:2024/05/21 14:03
#include "stdafx.h"#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace cv;using namespace std;   int main(int argc, char **argv) {   // (1)load a specified file as a 3-channel color image,   //    set its ROI, and allocate a destination image   const string imagename = argc > 1 ? argv[1] : "../image/building.jpg";   Mat src_img = imread(imagename);   if(!src_img.data)     return -1;   Mat dst_img = src_img.clone();     // (2)set ROI   Rect roi_rect(cvRound(src_img.cols*0.25), cvRound(src_img.rows*0.25), cvRound(src_img.cols*0.5), cvRound(src_img.rows*0.5));   Mat src_roi(src_img, roi_rect);   Mat dst_roi(dst_img, roi_rect);       // (2)With specified three parameters (angle, rotation center, scale)   //    calculate an affine transformation matrix by cv2DRotationMatrix   double angle = -45.0, scale = 1.0;   Point2d center(src_roi.cols*0.5, src_roi.rows*0.5);   const Mat affine_matrix = getRotationMatrix2D( center, angle, scale );     // (3)rotate the image by warpAffine taking the affine matrix   warpAffine(src_roi, dst_roi, affine_matrix, dst_roi.size(), INTER_LINEAR, BORDER_CONSTANT, Scalar::all(255));     // (4)show source and destination images with a rectangle indicating ROI   rectangle(src_img, roi_rect.tl(), roi_rect.br(), Scalar(255,0,255), 2);     namedWindow("src", CV_WINDOW_AUTOSIZE);   namedWindow("dst", CV_WINDOW_AUTOSIZE);   imshow("src", src_img);   imshow("dst", dst_img);   waitKey(0);     return 0; }
            
原创粉丝点击