OpenCV图像特征提取与检测C++(四)仿射变换、积分图计算

仿射变换(Affine Transformation或 Affine Map),又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图形的“平直性”(即:直线经过变换之后依然是直线)和“平行性”(即:二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。
一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)的形式。
三种常见的变换形式:

  • 旋转,rotation (线性变换)
  • 平移,translation(向量加)
  • 缩放,scale(线性变换)

仿射变换针对的是平面上的物体位姿变化,如水平/垂直方向位移、旋转、缩小/放大,常见的应用有ORC字符识别。投影变换针对的是三维空间中的位置变化,受限于物体依然是平面的,也称为二维投影变换,常见的应用有车牌识别。
使用OpenCV函数warpAffine 来实现一些简单的重映射。
使用OpenCV函数getRotationMatrix2D 来获得旋转矩阵。

warpAffine函数

void warpAffine(InputArray src,//输入图像,即源图像,填Mat类的对象即可
OutputArray dst, //函数调用后的运算结果存在这里,需和源图片有一样的尺寸和类型
InputArray M, //2×3的变换矩阵
Size dsize, //表示输出图像的尺寸
int flags=INTER_LINEAR,//插值方法的标识符。此参数有默认值INTER_LINEAR(线性插值),可选的插值方式如下:
//INTER_NEAREST - 最近邻插值
//INTER_LINEAR - 线性插值(默认值)
//INTER_AREA - 区域插值
//INTER_CUBIC –三次样条插值
//INTER_LANCZOS4 -Lanczos插值
//CV_WARP_FILL_OUTLIERS - 填充所有输出图像的象素。如果部分象素落在输入图像的边界外,那么它们的值设定为 fillval.
//CV_WARP_INVERSE_MAP –表示M为输出图像到输入图像的反变换,即 。因此可以直接用来做象素插值。否则, warpAffine函数从M矩阵得到反变换
intborderMode=BORDER_CONSTANT, //边界像素模式,默认值为BORDER_CONSTANT。
const Scalar& borderValue=Scalar())
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值