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

#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; 
}
             
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值