使用Python+OpenCV进行图像变换(平移、旋转、缩放、镜像)

目录

1、导入外部函数依赖包

2、读取图像

3、图像变换

3.1平移变换

3.2旋转变换

3.3缩放变换

3.4镜像变换


1、导入外部函数依赖包

import cv2
import numpy as np
import matplotlib.pyplot as plt

2、读取图像

img=cv2.imread('your image')#输入要读取的图片路径

3、图像变换

3.1平移变换

平移变换可以利用cv2.wartAffine函数来实现,该函数有三个参数,第一个 参数为待变换的图像,第二个参数为一个2*3的变换矩阵,第3个参数为变换 后的图像大小。

#平移
m1=np.float32([[1,0,200],[0,1,200]])
img1=cv2.warpAffine(img,m1,(img.shape[1],img.shape[0]))

3.2旋转变换

旋转变换可以利用cv2.getRotationMatrix2D 和 cv2.wartAffine 函数来共同实 现,其中第一个函数的作用是生成旋转矩阵M,第二个函数的作用是利用旋转矩 阵M对图像进行变换。cv2.getRotationMatrix2D函数共有3个参数,第一个参数 为图像旋转中心坐标,第二个参数为旋转角度,第三个参数为图像缩放比例。

#旋转
m2=cv2.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),45,1)
img2=cv2.warpAffine(img,m2,(img.shape[1],img.shape[0]))

3.3缩放变换

图像缩放变换可以利用cv2.resize函数来实现,该函数一共包含6个参数, 第一个参数为待变换的图像,第二个参数为修改后的图像尺寸,第三个参数为输 出图像,第四个参数和第五个参数分别为在x方向和y方向的缩放系数,第六个 参数为插值方式。需要注意的是,如果指定了第二个参数即输出图像的尺寸,那 么第四个和第五个参数的缩放系数无效;反之,如果未指定输出图像的尺寸,那 么图像将按照第四个和第五个参数的缩放系数进行缩放变换。 这里需要注意,图像显示建议使用cv2.imshow函数来显示,使用subplot无 法显示缩放前后的图像大小对比。

#缩放
img3=cv2.resize(img,[480,360],interpolation=cv2.INTER_NEAREST)
cv2.imshow('Image',img)
cv2.waitKey()
cv2.imshow('Image',img3)
cv2.waitKey()

3.4镜像变换

镜像翻转可以利用cv2.flip函数来实现,该函数主要有两个参数,第一个参 数为需要变换的图像,第二个参数为翻转的类型,通过指定第二个参数为1/0/-1 来是实现水平/垂直/水平垂直翻转。

img4=cv2.flip(imgrgb,1)

4、显示对比图像

plt.subplot(1,2,1)
plt.imshow(img)
plt.title('original')
plt.subplot(1,2,2)
plt.imshow(img_after)
plt.title('after')
plt.show()