'''
图像的缩放
INTER_NEAREST 最近邻插值
INTER_LINEAR 双线性插值(默认设置)
INTER_AREA 使用像素区域关系进行重采样。 它可能是图像抽取的首选方法,因为它会产生无云纹理的
结果。 但是当图像缩放时,它类似于INTER_NEAREST方法。
INTER_CUBIC 4x4像素邻域的双三次插值
INTER_LANCZOS4 8x8像素邻域的Lanczos插值
'''
import cv2 as cv
import numpy as np
img = cv.imread('timg1.jpg')
#缩小到原图像的0.75,下面的 None 本应该是输出图像的尺寸,但是因为后边我们设置了缩放因子
#因此这里为 None
res = cv.resize(img,None,fx=0.75,fy=0.75,interpolation=cv.INTER_CUBIC)
#获取图像的高宽
height,width=img.shape[:2]
#放大两倍,我们直接设置输出图像的尺寸,所以不用设置缩放因子。但如果1.5*width时会报错
#因为高宽是整数类型,乘以小数后可能得到浮点数类型。
res1 = cv.resize(img,(2*width,2*height),interpolation=cv.INTER_LANCZOS4)
#死循环,显示图片
while(1):
cv.imshow('img',img)
cv.imshow('res',res)
cv.imshow('res1',res1)
#按q键退出
if cv.waitKey(1) & 0xFF == ord('q'):
break
##原图
##缩小
##放大
'''
图像的平移
平移就是将对象换一个位置。如果你要沿(x,y)方向移动,移动的距是(tx,ty),你可以以下面的方式构建移动矩阵:
https://blog.csdn.net/on2way/article/details/40460675
'''
import cv2 as cv
import numpy as np
img = cv.imread('timg.jpg')
#构造移动矩阵,[1,0,10]指x轴向右平移10,1表示x轴比例;[0,1,20]指y轴向下平移20,1表示y轴比例,就是说这个移动矩阵
#就是在图像比例不变得基础上,向右平移10,向下平移20.
H = np.float32([[1,0,10],[0,1,20]])
#[1,0.05,0] 1表示x轴比例,0.05表示倾斜;[0.1,1,0]1表示y轴比例,0.1表示倾斜
H1 = np.float32([[1,0.05,0],[0.1,1,0]])
#获取图像行列树
rows,cols = img.shape[:2]
#cv2.warpAffine()接受三个参数,需要变换的原始图像,移动矩阵M 以及变换的图像大小(这个大小如果不和
#原始图像大小相同,那么函数会自动通过插值来调整像素间的关系)
#函数 cv2.warpAffine() 的第三个参数的是输出图像的大小,它的格式应该是图像的(宽,高)。应该记住的
#是图像的宽对应的是列数,高对应的是行数。
res = cv.warpAffine(img,H,(cols,rows))
res1 = cv.warpAffine(img,H1,(cols,rows))
cv.imshow('img',img)
cv.imshow('res',res)
cv.imshow('res1',res1)
cv.waitKey(6000)
##原图
##平移图
##变形图
'''
图像的旋转
'''
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190120120034568.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzODg4OQ==,size_16,color_FFFFFF,t_70)
````python
import cv2 as cv
import numpy as np
img = cv.imread('timg.jpg')
#获取图像行列树
rows,cols = img.shape[:2]
# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
# 下面是以原图像中心为旋转后图像的中心,旋转30度,图像缩放比例为0.8。
M=cv.getRotationMatrix2D((cols/2,rows/2),30,0.8)
dst=cv.warpAffine(img,M,(cols,rows))
cv.imshow('img',dst)
cv.waitKey(6000)