码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV官方文档学习记录(20)

时间:2014-12-18 18:41:34      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   io   color   os   sp   for   

2D仿射变换(AffineTransform)

主要函数:

//获取变换矩阵M=[A B]
    warp_mat = getAffineTransform(srcTri, dstTri);
//获取旋转矩阵
    rot_mat = getRotationMatrix2D(center, angle, scale);

重要函数:

warpAffine(src, warp_dst, warp_mat, warp_dst.size());

 

代码如下,解释全在注释中:

 1 #include <opencv2\opencv.hpp>
 2 #include <iostream>
 3 #include <string>
 4 
 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
 6 
 7 using namespace std;
 8 using namespace cv;
 9 
10 void showImg(const string &win_name, const Mat &img)
11 {
12     namedWindow(win_name, CV_WINDOW_AUTOSIZE);
13     imshow(win_name, img);
14 }
15 
16 int main(void)
17 {
18     Point2f srcTri[3];
19     Point2f dstTri[3];
20 
21     Mat rot_mat(2, 3, CV_32FC1);
22     Mat warp_mat(2, 3, CV_32FC1);
23     Mat src, warp_dst, rotate_dst;
24 
25     src = imread("lena.jpg");
26     if (src.empty())
27         return -1;
28     showImg("src", src);
29 
30     warp_dst = Mat::zeros(src.rows, src.cols, src.type());
31 
32     //原始采样点
33     srcTri[0] = Point2f(0, 0);
34     srcTri[1] = Point2f(src.cols - 1, 0);
35     srcTri[2] = Point2f(0, src.rows - 1);
36 
37     //构建映射点
38     dstTri[0] = Point2f(src.cols*0.0, src.rows*0.33);
39     dstTri[1] = Point2f(src.cols*0.85, src.rows*0.25);
40     dstTri[2] = Point2f(src.cols*0.15, src.rows*0.7);
41 
42     //获取变换矩阵M=[A B]
43     warp_mat = getAffineTransform(srcTri, dstTri);
44 
45     warpAffine(src, warp_dst, warp_mat, warp_dst.size());
46 
47     //旋转中心
48     Point center = Point(src.cols / 2, src.rows / 2);
49     //旋转角度
50     double angle = -50.0;
51     //旋转中的缩放(因为方形图像如果不缩放进行旋转会出现溢出现象),保证不溢出的话,缩放要在 二分之根号2 以下(约为0.7左右)
52     double scale = 0.7;
53 
54     //获取旋转矩阵
55     rot_mat = getRotationMatrix2D(center, angle, scale);
56 
57     warpAffine(src, rotate_dst, rot_mat, src.size());
58 
59     showImg("warp_dst", warp_dst);
60     showImg("warp_rotate_dst", rotate_dst);
61     waitKey();
62     return 0;
63 }

 

结果图片:

仿射:

bubuko.com,布布扣

旋转缩放:

bubuko.com,布布扣

 

主要说明请查阅相关数学资料。

 

以上。

 

OpenCV官方文档学习记录(20)

标签:style   blog   http   ar   io   color   os   sp   for   

原文地址:http://www.cnblogs.com/lhyz/p/4172306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!