OpenCV官方文档学习记录(20)
2014-12-18 17:49
639 查看
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());
代码如下,解释全在注释中:
#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
using namespace std;
using namespace cv;
void showImg(const string &win_name, const Mat &img)
{
namedWindow(win_name, CV_WINDOW_AUTOSIZE);
imshow(win_name, img);
}
int main(void)
{
Point2f srcTri[3];
Point2f dstTri[3];
Mat rot_mat(2, 3, CV_32FC1);
Mat warp_mat(2, 3, CV_32FC1);
Mat src, warp_dst, rotate_dst;
src = imread("lena.jpg");
if (src.empty())
return -1;
showImg("src", src);
warp_dst = Mat::zeros(src.rows, src.cols, src.type());
//原始采样点
srcTri[0] = Point2f(0, 0);
srcTri[1] = Point2f(src.cols - 1, 0);
srcTri[2] = Point2f(0, src.rows - 1);
//构建映射点
dstTri[0] = Point2f(src.cols*0.0, src.rows*0.33);
dstTri[1] = Point2f(src.cols*0.85, src.rows*0.25);
dstTri[2] = Point2f(src.cols*0.15, src.rows*0.7);
//获取变换矩阵M=[A B] warp_mat = getAffineTransform(srcTri, dstTri);
warpAffine(src, warp_dst, warp_mat, warp_dst.size());
//旋转中心
Point center = Point(src.cols / 2, src.rows / 2);
//旋转角度
double angle = -50.0;
//旋转中的缩放(因为方形图像如果不缩放进行旋转会出现溢出现象),保证不溢出的话,缩放要在 二分之根号2 以下(约为0.7左右)
double scale = 0.7;
//获取旋转矩阵 rot_mat = getRotationMatrix2D(center, angle, scale);
warpAffine(src, rotate_dst, rot_mat, src.size());
showImg("warp_dst", warp_dst);
showImg("warp_rotate_dst", rotate_dst);
waitKey();
return 0;
}
结果图片:
仿射:
旋转缩放:
主要说明请查阅相关数学资料。
以上。
相关文章推荐
- OpenCV官方文档学习记录(1)
- OpenCV官方文档学习记录(6)
- OpenCV官方文档学习记录(18)
- OpenCV官方文档学习记录(2)
- OpenCV官方文档学习记录(14)
- OpenCV官方文档学习记录(19)
- OpenCV官方文档学习记录(16)
- OpenCV官方文档学习记录(4)
- OpenCV官方文档学习记录(12)
- OpenCV官方文档学习记录(8)
- OpenCV官方文档学习记录(5)
- OpenCV官方文档学习记录(10)
- OpenCV官方文档学习记录(11)
- OpenCV官方文档学习记录(17)
- OpenCV官方文档学习记录(15)
- OpenCV官方文档学习记录(9)
- OpenCV官方文档学习记录(7)
- OpenCV官方文档学习记录(3)
- OpenCV官方文档学习记录(13)
- OpenCV基础入门 基于官方文档解读(4)--core模块学习