代码:
import cv2
if __name__ == "__main__":
img = cv2.imread("img/woman_side_portrait.jpg", cv2.IMREAD_UNCHANGED)
scale_percent = 30
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
resized = cv2.resize(img, dim, interpolation=cv2.INTER_LINEAR)
cv2.imwrite("img/scale30.jpg",resized)
fx = 1.5
fy = 1.5
resized1 = cv2.resize(resized, dsize=None, fx=fx, fy=fy, interpolation=cv2.INTER_NEAREST)
cv2.imwrite("img/zoom_nearest.jpg", resized1)
resized2 = cv2.resize(resized, dsize=None, fx=fx, fy=fy, interpolation=cv2.INTER_LINEAR)
cv2.imwrite("img/zoom_linear.jpg", resized2)
cv2.imshow("Resized image", resized)
cv2.imshow("INTER_NEAREST image", resized1)
cv2.imshow("INTER_LINEAR image", resized2)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果图:
原图
0.3倍缩小
在0.3倍基础上进行1.5倍放大(最近邻插值)
在0.3倍基础上进行1.5倍放大(线性插值)
视频讲解链接:
[图像缩放]最近邻插值和双线性插值 nearest neighbor and bilinear