图像基础11 仿射

学习资源《机器学习实践指南 案例应用解析》

概念

仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。[1]
仿射变换是在几何上定义为两个向量空间之间的一个仿射变换或者仿射映射(来自拉丁语,affine,“和…相关”)由一个非奇异的线性变换(运用一次函数进行的变换)接上一个平移变换组成。
在有限维的情况,每个仿射变换可以由一个矩阵A和一个向量b给出,它可以写作A和一个附加的列b。一个仿射变换对应于一个矩阵和一个向量的乘法,而仿射变换的复合对应于普通的矩阵乘法,只要加入一个额外的行到矩阵的底下,这一行全部是0除了最右边是一个1,而列向量的底下要加上一个1。

详细数学推理可见百度百科


Python OpenCV

warpAffine

OpenCV的warpAffine函数可实现仿射变换:

cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) -> dst

getRotationMatrix2D

OpenCV的getRotationMatrix2D函数计算二维旋转变换矩阵:

cv2.getRotationMatrix2D(center,angle,scale)->retval

实例 对目标图片实现缩小并旋转的操作

# -*- coding: utf-8 -*-

import cv2


fn="test3.jpg"
img=cv2.imread(fn)
w=img.shape[1]
h=img.shape[0]

#得到仿射变换矩阵,完成旋转
#中心
mycenter=(h/2,w/2)
#旋转角度
myangle=90
#缩放尺度
myscale=0.5
#仿射变换完成缩小并旋转
transform_matrix=cv2.getRotationMatrix2D(mycenter,myangle,myscale)
newimg = cv2.warpAffine(img,transform_matrix,(w,h))
cv2.imshow('preview',newimg)

cv2.waitKey()
cv2.destroyAllWindows()

这里写图片描述

单纯的缩放也可以通过resize函数实现:

ResizeImg = cv2.resize(src=Img, dsize=(Img.shape[1]*2,\
              Img.shape[0]*2), interpolation=cv2.INTER_LINEAR)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值