OpenCV学习--仿射变换(affine)
来源:互联网 发布:水浒传主旨在哪里知乎 编辑:程序博客网 时间:2024/05/06 01:27
图像的基本几何变换有-- 平移,旋转,尺度,仿射;仿射变换可以理解为平移旋转尺度的组合效果。下面给出数学上的定义
是输入图像的点,时输出图像的点
A是2x2旋转矩阵, B是平移向量
(一)平移的实现
(二)旋转的实现
(三)尺度的实现
从上面的实现可以看出,使用仿射变换是需要求解6个参数,旋转矩阵4个,平移向量2个。这也是我们在使用OpenCV的warpAffine函数时需要输入3对坐标了
下面是测试程序
#include "stdafx.h"#include <opencv2/opencv.hpp>#include <iostream>#include "affine.h"using namespace std;using namespace cv;static char* source_wnd = "Source Image";static char* warp_wnd = "Warp";static char* warp_rotate_wnd = "Warp_rotate_wnd";void affine_test(){Point2f srcTri[3];Point2f dstTri[3];Mat rot_mat(2, 3, CV_32FC1);Mat warp_mat(2, 3, CV_32FC1);Mat src, warp_dst, warp_rotate_dst;//加载图像src = imread("dog.jpg");warp_dst = Mat::zeros(src.size(), 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, 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);dstTri[0] = Point2f(src.cols*0.25, src.rows*0.25);dstTri[1] = Point2f(src.cols*0.75, src.rows*0.25);dstTri[2] = Point2f(src.cols*0.25, src.rows*0.75);//求得仿射变换,一个2x3的矩阵warp_mat = getAffineTransform(srcTri, dstTri);//对源图像使用上面的仿射变换warpAffine(src, warp_dst, warp_mat, warp_dst.size());//计算饶图像中点顺时针旋转50,缩放因子为0.6的矩阵Point center(src.cols/2, src.rows/2);double angle = 50.0;double scale = 0.6;//求旋转矩阵rot_mat = getRotationMatrix2D(center, angle, scale);warpAffine(warp_dst, warp_rotate_dst, rot_mat, warp_dst.size());imshow(warp_wnd, warp_dst);imshow(source_wnd, src);imshow(warp_rotate_wnd, warp_rotate_dst);}
0 0
- OpenCV学习--仿射变换(affine)
- OpenCV入门学习(二)Affine Transformations(仿射变换)
- Affine transformation(仿射变换)
- Ransac+仿射变换(Affine Transform)
- Q76:仿射变换(Affine Transformation)
- 仿射变换(Affine Transform)
- 仿射变换(Affine Transform)
- 仿射变换 affine transformation
- 仿射变换(Affine Transformation)
- OpenCV中 变换模型求解的函数补充: 刚体变换(Rigid Transform)和仿射变换(Affine Transform)
- 仿射变换(Affine transformation)与python实践
- PDF----affine(仿射)矩阵变换
- 何为仿射变换(Affine Transformation)
- 何为仿射变换(Affine Transformation)
- 仿射(Affine)空间
- 仿射(Affine)空间
- affine transformation matrix 仿射变换矩阵 与 OpenGL
- OpenCV学习笔记(九) 重映射、仿射变换
- JSON.stringify 语法讲解
- win7下安装Mysql 服务
- 用grub2引导安装ubuntu13.10
- HttpURLConnection模拟登录后添加cookie读取网页
- 学.Net四大优势必选广州传智播客
- OpenCV学习--仿射变换(affine)
- java语言正则表达式的用法
- 算法导论系列文章之简单数组队列
- HttpURLConnection连接
- 零付款可就读广州传智播客Java课程
- 扩转欧几里得算法 hdu 2669 Romantic
- Java代码高亮
- vim 浏览文件窗口插件
- linux i2c 驱动之一