使用C++、opencv进行图像的仿射变换
仿射变换(Affine Transformation或Affine Map),又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。
更多仿射变换的原理可参考:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html
相关API:
void warpAffine ( InputArray src,OutputArray dst,InputArray M,Size dsize, int flags = INTER_LINEAR,int borderMode = BORDER_CONSTANT,const Scalar & borderValue = Scalar() )
warpAffine()函数的作用是按照下面的公式对图像进行变换:
第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。
第二个参数,OutputArray类型的dst,函数调用后的运算结果存在这里,需和源图片有一样的尺寸和类型。
第三个参数,InputArray类型的M,2×3的变换矩阵。
第四个参数,Size类型的size,表示输出图像的尺寸
第五个参数,int类型的fags,插值方法的标识符。此参数有默认值INTER LⅠNEAR(线性插值),可选的插值方式如表7.1所示。