1.基本变换——缩放
import cv2
import numpy as np
dog = cv2.imread('./dog.jpeg')
cat = cv2.imread('./cat.jpeg')
print(dog.shape)
print(cat.shape)
new_cat = cv2.resize(cat, (499, 360))
print(new_cat.shape)
cv2.imshow('img', np.hstack((dog, new_cat)))
cv2.waitKey()
cv2.destroyAllWindows()
(360, 499, 3)
(480, 640, 3)
(360, 499, 3)
(1)shape是行、列、深度,而cv2.resize是宽、高。故需要修改顺序。
(2)可以修改插值算法,默认是双线性插值
resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
- src: 要缩放的图片
- dsize: 缩放之后的图片大小, 元组和列表表示均可.
- dst: 可选参数, 缩放之后的输出图片
- fx, fy: x轴和y轴的缩放比, 即宽度和高度的缩放比.
- interpolation: 插值算法, 主要有以下几种:
- INTER_NEAREST, 邻近插值, 速度快, 效果差.
- INTER_LINEAR, 双线性插值, 使用原图中的4个点进行插值. 默认.
- INTER_CUBIC, 三次插值, 原图中的16个点.
- INTER_AREA, 区域插值, 效果最好, 计算时间最长。
(3)可以通过xy轴(fx fy)比例缩放图片
import cv2
import numpy as np
dog = cv2.imread('./dog.jpeg')
cat = cv2.imread('./cat.jpeg')
# new_dog1 = cv2.resize(dog, (640, 480), interpolation=cv2.INTER_NEAREST)
# new_dog2 = cv2.resize(dog, (640, 480), interpolation=cv2.INTER_LINEAR)# 默认效果
# new_dog3 = cv2.resize(dog, (640, 480), interpolation=cv2.INTER_CUBIC)
# new_dog4 = cv2.resize(dog, (640, 480), interpolation=cv2.INTER_AREA)
new_dog = cv2.resize(dog, dsize=None, fx=1.5, fy=0.5, interpol