1.扩展缩放
扩展缩放只是改变图像的尺寸大小。OpenCV 提供的函数 cv2.resize()
resize(src, dst, interpolation=CV_INTER_LINEAR)
import cv2 as cv
import numpy as np
img=cv.imread(‘D:/sixiang.JPG’)
res=cv.resize(img,None,fx=2,fy=2,interpolation=cv.INTER_CUBIC)
height,width=img.shape[:2]
res=cv.resize(img,(2width,2height),interpolation=cv.INTER_CUBIC)
while(1):
cv.imshow(‘res’,res)
cv.imshow(‘img’,img)
if cv.waitKey(1) & 0xFF == 27:
break
cv.destroyAllWindows()
2. 平移
平移使用函数 cv2.warpAffine(),就是将对象换一个位置。如果要沿(x,y)方向移动,移动的距离 是(tx,ty):
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread(‘D:/yu.JPG’,0)
rows,cols = img.shape #得到图像的高宽
M =np.float32([[1,0,200],[0,1,200]])
#x轴移动200 ,y轴移动200 Numpy 数组构建这个矩阵(数据类型是 np.float32),然后把它传给函cv.warpAffine(Numpy 数组构建这个矩阵(数据类型是 np.float32),然 后把它传给函数 cv2.warpAffine()
dst = cv.warpAffine(img,M,(cols,rows)) #第三个参数的是输出图像的大小,它的格式应该是图像的(宽,高)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
3. 旋转
使用函数cv2.getRotationMatrix2D进行旋转
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread(‘D:/yu.JPG’,0)
rows,cols = img.shape
M = cv.getRotationMatrix2D((cols/2,rows/2),180,1) #这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
dst = cv.warpAffine(img,M,(cols,rows))
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
4.仿射变换
在仿射变换中,原图中所有的平行线在结果图像中同样平行。为了创建这个矩阵需要从原图像中找到三个点以及他们在输出图像中的位置。然后cv.getAffineTransform 会创建一个 2x3 的矩阵,最后这个矩阵会被传给函数 cv2.warpAffine()
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img=cv.imread(‘D:/yu.jpg’)
rows,cols,ch=img.shape
pts1=np.float32([[50,50],[200,50],[50,200]])
pts2=np.float32([[10,100],[200,50],[100,200]]) #生成2*3得矩阵
M=cv.getAffineTransform(pts1,pts2) #得到变换矩阵
dst=cv.warpAffine(img,M,(cols,rows))#进行变换
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()