一、概念
仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。
仿射变换保持了二维图形的平直性和平行性。平直性:变换是直线的,变换后还是直线;平行性:二维图形之间的相对位置关系保持不变。
二、OpenCV的仿射实现
1. warpAffine
实现仿射变换
cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) -> dst
- src表示输入图像
- M为转换矩阵2*3,需要手动给出
- dsize表示输出图像的size,用来截取从原点到size的大小的图片
2. getRotationMatrix2D
计算二维旋转变换矩阵
cv2.getRotationMatrix2D(center,angle,scale)->retval
- center为旋转中心
- angle为旋转角度
- scale为缩放比例
3. cv2.getAffineTransform(src, dst)
提供了计算转换矩阵的方法。
- src和dst分别表示输出坐标和输出坐标
注意,这里坐标数量应该为3个;
返回值为期望的转换矩阵M;
4. 代码实例
# -*- coding: utf-8 -*-import cv2fn="test3.jpg"img=cv2.imread(fn)w