Opencv-python(cv2)改变图像尺寸的cv2.resize()函数

如何改变图像大小

 在Opencv-python中,通过调用cv2.resize()通过插值的方式来改变图像的尺寸,关于该函数的具体介绍,已经有非常多的博客进行了剖析,这里推荐一个。

cv2.resize()的要点与坑

cv2.resize()的形参要点

 在cv2.resize()函数中,主要用到的形参包括

  1. 输入Mat数据,
  2. dsize:代表期望的输出图像大小尺寸
  3. fx:代表水平方向上(图像宽度)的缩放系数,
  4. fy:代表竖直方向上(图像高度)的缩放系数,另外,如果dsize被设置为0(None),则按fx与fy与原始图像大小相乘得到输出图像尺寸大小。
  5. interpolation:插值方式,默认选择线性插值,越复杂的插值方式带来的改变和差异越大。
  6. 具体的参数选择与计算可参考

cv2.resize()的坑

 在cv2.resize()函数中,比较坑的在于dsize形参,比如想将一张128*256大小的图像放大到256*512大小,最好的办法是通过设置dsize为None,然后通过fx和fy来处理:

data = cv2.resize(data,dsize=None,fx=2,fy=2,interpolation=cv2.INTER_LINEAR)

 再不济,也可以采用在dsize中设置倍数来处理:

data = cv2.resize(data,dsize=(2*height,2*width),fx=1,fy=1,interpolation=cv2.INTER_LINEAR)

 但是,如果直接在dsize形参中写(256,512),则得到的其实是(512,256)的结果:

data = cv2.resize(data,dsize=(256,512),fx=1,fy=1,interpolation=cv2.INTER_LINEAR)

即:dsize形参的数组的宽度在前,高度在后(output_width,output_height),所以当形参为(256,512)时,实际上得到的其实是512*256的图像,而并非我们期望的256*512图像。

经验分享 程序员 微信小程序 职场和发展