在使用opencv-python中的cv2.resize()函数进行图片缩放时,输入参数中的dsize,即输出图片的大小,顺序应为(w, h),和cv2.imread()读入图片的顺序相反,cv2.imread()读入图片的通道顺序为(h, w, c)。
例如使用opencv处理一张宽1280,高1024的图片:
import cv2
dsize = (640, 640)
img = cv2.imread("demo.jpg")
print(img.shape)
r = min(dsize[0] / img.shape[0], dsize[1] / img.shape[1])
simg1 = cv2.resize(img, (int(img.shape[0]*r), int(img.shape[1]*r)), interpolation=cv2.INTER_LINEAR)
print(simg1.shape)
simg2 = cv2.resize(img, (int(img.shape[1]*r), int(img.shape[0]*r)), interpolation=cv2.INTER_LINEAR)
print(simg2.shape)
输出结果为:
(1024, 1280, 3)
(640, 512, 3)
(512, 640, 3)
显然,simg2的大小符合预期。