opencv-图像形状变换(二)

放大和缩小

放大和缩小指相对于原坐标(x,y),变换为了(a*x, b*y),即水平方向放大了a倍,水平方向放大了b倍,其对应的转变矩阵如下:   

旋转变换

将(x,y),以坐标原点为中心,顺时针方向旋转α得到(x1,y1), 有如下关系x1 = xcosα-ysinα, y1 =xsinα+ycosα; 因此可以构建对应的转变矩阵如下:

opencv将其扩展到,任意点center为中心进行顺时针旋转α,放大scale倍的,转变矩阵如下:

通过getRotationMatrix2D()能得到转变矩阵

cv2.getRotationMatrix2D()  返回2*3的转变矩阵(浮点型)
    参数:
        center:旋转的中心点坐标
        angle:旋转角度,单位为度数,证书表示逆时针旋转
        scale:同方向的放大倍数

仿射变换矩阵的计算

通过上述的平移,缩放,旋转的组合变换即实现了仿射变换,上述多个变换的变换矩阵相乘即能得到组合变换的变换矩阵。同时该变换矩阵中涉及到六个未知数(2*3的矩阵),通过变换前后对应三组坐标,也可以求出变换矩阵,opencv提供了函数getAffineTransform()来计算变化矩阵

    1> 矩阵相乘:将平移,旋转和缩放的变换矩阵相乘,最后即为仿射变换矩阵

    2> getAffineTransform():根据变换前后三组坐标计算变换矩阵     

cv2.getAffineTransform()  返回2*3的转变矩阵
参数:
src:原图像中的三组坐标,如np.float32([[50,50],[200,50],[50,200]])
dst: 转换后的对应三组坐标,如np.float32([[10,100],[200,50],[100,250]])

官网使用示例: 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值