resize(src,dst,dsize,fx,fy,interpolation)
src:操作图像
dst:输出,在python中可以不用
dsize:目标大小
fx:x轴的缩放因子
fy:y轴的缩放因子,如果定义了dsize则不需要设置fx fy
interpolation:插值算法
常用缩放算法:
INTER_NEAREST 邻近插值,速度快,效果差
INTER_LINEAR 双线性插值,原图中的4个点,相比于邻近插值,速度快,效果好,为默认插值
INTER_CUBIC 三次插值,原图中的16个点,效果更好,不过时间较长
INTER_AREA 区域插值,效果最好,速度最慢
插值算法,在进行图片放大时可以明显看出差别
import cv2
import numpy as np
img = cv2.imread('C:\\Users\\Mengyang\\Desktop\\112.png')
#new = cv2.resize(img,(400,400))
#按比例缩放
print(img.shape)
#new = cv2.resize(img,None,fx=0.7,fy=0.7)
new = cv2.resize(img,None,fx=0.7,fy=0.7,interpolation = cv2.INTER_AREA) #采用插值算法
cv2.imshow('img',img)
cv2.imshow('new',new)
cv2.waitKey(0)
与图像的旋转不同,翻转为上下 左右
flip(img,flipCode)
flipCode == 0 上下翻转
flipCode>0 左右翻转
flipCode<0 上下+左右
import cv2
import numpy as np
img = cv2.imread('C:\\Users\\Mengyang\\Desktop\\112.png')
new = cv2.flip(img,0) #上下翻转
new1 = cv2.flip(img,1) #左右翻转
new2 = cv2.flip(img,-1) #先上下翻转,再左右翻转
cv2.imshow('img',img)
cv2.imshow('new',new)
cv2.imshow('new1',new1)
cv2.imshow('new2',new2)
cv2.waitKey(0)
按角度旋转
rotate(img,rotateCode)
ROTATE_90_CLOCKWISE 90度顺时针旋转
ROTATE_180 180度旋转
ROTATE_90_COUNTERCLOCKWISE 顺时针旋转270度,也相当于逆时针旋转90度
import cv2
import numpy as np
img = cv2.imread('C:\\Users\\Mengyang\\Desktop\\112.png')
new = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) #顺时针旋转90度
new1 = cv2.rotate(img, cv2.ROTATE_180) #旋转180度
new2 = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE) #旋转270度 逆时针90度
cv2.imshow('img',img)
cv2.imshow('new',new)
cv2.imshow('new1',new1)
cv2.imshow('new2',new2)
cv2.waitKey(0)