+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-04(11)

2020-05(28)

2020-06(32)

2020-07(32)

2020-08(51)

利用Python里的cv2(opencv)改变图片大小【同时也是cv2.resize的学习】

发布于2021-02-24 11:22     阅读(972)     评论(0)     点赞(29)     收藏(4)


0

1

2

3

4

5

6

简介

opencv库当中的resize函数可以帮助我们快速进行图像的大小变化,在此我记录一下我的学习心得,并且提出自己的问题,希望大家可以参考和阅读。

resize函数

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst

参数说明

src :源图像
dst :目标图像。当参数dsize不为0时,dst的大小为dsize的大小;否则,它的大小需要根据src的大小以及参数fx和fy决定。另外,dst的类型和src图像相同。
dsize :目标图像大小。当dsize为0时,它可以通过以下公式计算得出:
当dsize为0时,它可以通过以下公式计算得出:
请注意,参数dsize和参数(fx, fy)不能够同时为0
fx :水平轴上的比例因子。当它为0时,计算公式如下:
当fx为0时,计算公式如下:
fy :垂直轴上的比例因子。当它为0时,计算公式如下:
当fy为0时,计算公式如下:
interpolation :(说实话我感觉这几个差不多)
Interpolation 方法:

  • INTER_NEAREST:最近邻插值法
  • INTER_LINEAR:双线性插值法(默认)
  • INTER_AREA:基于局部像素的重采样。对于图像抽取来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
  • INTER_CUBIC:基于4x4像素邻域的3次插值法
  • INTER_LANCZOS4:基于8x8像素邻域的Lanczos插值

代码示例

第一种(使用参数dsize)

import cv2
 
img = cv2.imread('image1.jpg') #读图
 
print(img.shape)         #输出为(450,600,3)(高,宽,通道数)
height,width = img.shape[:2]  #获取原图像的水平方向尺寸和垂直方向尺寸。
res = cv2.resize(img,(width//2,height//2),interpolation=cv2.INTER_CUBIC)   #dsize=(2*width,2*height)
 
cv2.imshow('res',res)
cv2.imwrite('output.jpg',res)


#cv2.destroyWindow('res')
#销毁指定窗口

第二种(使用参数fx,fy)

import cv2
 
img = cv2.imread('image1.jpg')#读图

height,width = img.shape[:2]  #获取原图像的水平方向尺寸和垂直方向尺寸。
res = cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#比例因子:fx=2,fy=2
cv2.imshow('res',res)
cv2.imwrite('output2.jpg',res)


#cv2.destroyWindow('res')
#销毁指定窗口

另:附上官方文档截图
cv2.resize官方文档截图

参考文章链接

1、opencv中的resize 函数 的理解以及引申
2、图像处理: 五种 插值法
3、cv2.resize官方文档

0

1

2

3

4



所属网站分类: 技术文章 > 博客

作者:83whjh

链接: https://www.pythonheidong.com/blog/article/853488/1fe37ba5ac3c61ff16c3/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)