文章目录

  • 自定义图片大小
    • 第一种
    • 第二种
  • 总结


自定义图片大小

第一种

我们可以先创建一个窗口调整大小,然后把图片放进去,就是上篇文章那个例子
也可以设置图片的大小,通过resize()这个函数

cv2.resize时,参数输入是 宽×高×通道 可参考opencv: cv2.resize 探究(源码)

cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)
scr:原图
dsize:输出图像尺寸
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子

interpolation:插值方法
interpolation 选项		所用的插值方法
INTER_NEAREST			最近邻插值
INTER_LINEAR			双线性插值(默认设置)
INTER_AREA				使用像素区域关系进行重采样。 它可能是图像抽取的首选方法,因为它会产生无云纹理的结果。 但是当图像缩放时,它类似于INTER_NEAREST方法。
INTER_CUBIC				4x4像素邻域的双三次插值
INTER_LANCZOS4			8x8像素邻域的Lanczos插值

示例:

import cv2
path="./img_1.png"
img=cv2.imread(path)
img1=cv2.resize(img,(250,250),interpolation=cv2.INTER_NEAREST)#设置图片大小为250*250,可自定义,也可按照比例缩放,前提的需要知道照片的宽和高
cv2.imshow("img_1",img1)
cv2.waitKey(0)

效果图:

第二种

按照比例进行缩放

import cv2
path="./img_1.png"
img=cv2.imread(path)
height,width = img.shape[:2]  #获取原图像的水平方向尺寸和垂直方向尺寸。
img1=cv2.resize(img,(int(width/2),int(height/2)),interpolation=cv2.INTER_NEAREST)#这里设置的是,宽和高都减少一倍,即缩放1/2,这里做了一个强制转换,因为/2之后,可能为浮点型,设置大小是必须为整数型
cv2.imshow("img_2",img1)
cv2.imshow("img_1",img)
cv2.waitKey(0)

效果图:


总结

通过resize(),我们可以改变图片的大小,这个函数为我们提供了五种改变大小的算法,通过设置interpolation的值来使用相应的算法,至于算法是如何实现的我们可以参考最邻近插值法、双线性插值法、双三次插值、Lanczos插值

更多推荐

图片缩放