使用 cv2.imrad 读取的图像的 shape 是 (H,W,C)
即 shape[0] := H
shape[1] := W,即先高度,后宽度。
但是 cv.resize 时,输入的目标图像的形状是 (W,H),即先宽度、后高度。
还有一种参数是告知 resize 函数形状放缩因子 f x f y f_x \quad f_y fxfy,分别对应 W H W \quad H WH的放缩因子,也是先宽度后高度。
import cv2
pic_name = 'PYY.png'
pic_data = cv2.imread(pic_name, cv2.IMREAD_UNCHANGED) # (H,W,C)
cv2.imshow("original_img", pic_data)
#resized = cv2.resize(pic_data, None, fx=0.5, fy=1, interpolation=cv2.INTER_AREA)
H,W = pic_data.shape[0:2]
resized = cv2.resize(pic_data, (int(W*0.5),H), interpolation=cv2.INTER_AREA)
cv2.imwrite('W_half.png',resized)
print('Resized Dimensions : ',resized.shape)
cv2.imshow("resized_img", resized)
cv2.waitKey(0)
可以看出,高度无变化,宽度变为原来的 一半。