【图像处理】——改变图像的大小(降采样&重采样)

转载自:https://jingyan.baidu.com/article/a3a3f81139be1f8da2eb8ade.html

目录

1、拉伸图片——重采样

2、缩小图片

1)三次插值法cv2.INTER_CUBIC

2)重采样插值法cv2.INTER_AREA

3)上面两种方法的差值


我们常常需要将图片变成一样大小的图片,这样利于整理和批量操作,这时候就需要使用到调整图像的大小了

这里需要使用到的是重采样和降采样,重采样用在拉伸图像上,增加的像素点的像素值是通过插值法来得到的,最常用的方法就是将接近的像素点的值复制过去;降采样就是缩小图片时按照一定的距离进行选取像素点

先看看图片的大小:

import cv2 

image=cv2.imread('C:/……/a.jpg')

a = image.shape

print(a)

其中,a[0]=371表示图片高度,a[1]=500表示图片宽度,a[2]=3表示图片是3通道图片。

【图像处理】——改变图像的大小(降采样&重采样)

1、拉伸图片——重采样

改变图片大小为500像素高度和371像素的宽度:

p0=cv2.resize(image,(371,500),interpolation=cv2.INTER_CUBIC)

这样,图片比例被破坏了,感觉恐龙被上下拉长了。

【图像处理】——改变图像的大小(降采样&重采样)

2、缩小图片

缩放图片的大小,需要增加或删除某些像素。但是,增加的像素的像素值,不能凭空产生,需要根据临近像素值,近似地给出增加的像素的值。

1)三次插值法cv2.INTER_CUBIC

如果需要按比例缩放图片,可以这样:

p1=cv2.resize(image,(int(a[1]/1.5),int(a[0]/1.5)),

               interpolation=cv2.INTER_CUBIC)

【图像处理】——改变图像的大小(降采样&重采样)

2)重采样插值法cv2.INTER_AREA

给增加的像素赋值,需要用插值的方法。而这种方法并不唯一。比如,上面介绍了三次插值法(cv2.INTER_CUBIC)和重采样插值法(cv2.INTER_AREA)。

p2=cv2.resize(image,(int(a[1]/1.5),int(a[0]/1.5)),

               interpolation=cv2.INTER_AREA)

【图像处理】——改变图像的大小(降采样&重采样)

3)上面两种方法的差值

你可能觉得p1和p2是一样的,但不是:

cv2.imshow('a',p1-p2)

cv2.waitKey(0)

【图像处理】——改变图像的大小(降采样&重采样)