图片缩放cv2.resize()详解
1 函数cv2.resize()的参数
resize(class="lazy" data-src, dsize, dst=None, fx=None, fy=None, interpolation=None)
参数解释:
参数 | 解释 |
---|---|
class="lazy" data-src | 输入原图像 |
dsize | 输出图像的大小,方式:(宽,高) |
fx | width方向的缩放比例 |
fy | height方向的缩放比例 |
interpolation | 插值方式,默认为双线性插值 |
scr、dsize是必传参数,fx、fy、interpolation是可选参数。
2 interpolation参数解释
图片进行缩放,需要对像素进行重新计算,interpolation参数便是决定缩放图像时计算像素的方式,常见的方式以下五种:
参数 | 算法 | 数值 |
---|---|---|
INTER_NEAREST | 最邻近插值 | 0 |
INTER_LINEAR | 双线性插值 (默认) | 1 |
INTER_CUBIC | 4x4像素邻域内的双立方插值 | 2 |
INTER_AREA | 使用像素区域关系进行重采样 | 3 |
INTER_LANCZOS4 | 8x8像素邻域内的Lanczos插值 | 4 |
还有其他的选择:
INTER_BITS2 = 10INTER_LINEAR_EXACT = 5INTER_MAX = 7INTER_NEAREST_EXACT = 6INTER_TAB_SIZE = 32INTER_TAB_SIZE2 = 1024
3 代码演示
import cv2image = cv2.imread('./flower.jpg', 1)h, w, _ = image.shapeimage_f = cv2.resize(image, (0, 0), fx=2, fy=1)image0 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_NEAREST)image1 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_LINEAR)image2 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_CUBIC)image3 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_AREA)image4 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_LANCZOS4)image5 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_BITS)image10 = cv2.resize(image, (w * 2, h * 2), interpolation=cv2.INTER_BITS2)cv2.imshow('image', image)cv2.imshow('image_f', image_f)cv2.imshow('image0', image0)cv2.imshow('image1', image1)cv2.imshow('image2', image2)cv2.imshow('image3', image3)cv2.imshow('image4', image4)cv2.imshow('image5', image5)cv2.imshow('image10', image10)cv2.waitKey(0)
4 效果
image
image_f
image0
image1
image2
image3
image4
image5
image10
5 总结
通过图形的效果看来,cv2.INTER_CUBIC、cv2.INTER_LANCZOS4和cv2.INTER_BITS2效果比较好,优于双线性插值cv2.INTER_LINEAR,但是双线性插值速度更佳,如果要缩小图片可以考虑cv2.INTER_LINEAR。
image_f这张图是才是fx和fy,如果不想手动计算图片,则dsize直接置为(0, 0),在大多数时候还是使用dsize而不用fx和fy。
来源地址:https://blog.csdn.net/Zeus_daifu/article/details/128702112
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341