OpenCV resize 的各插值方式的区别与用途

19 篇文章 6 订阅
18 篇文章 2 订阅

一、resize 函数中 interpolation 参数的区别和用途

cv2.resize 函数中的 interpolation 参数用于指定图像缩放时使用的插值方法。不同的插值方法会影响缩放后图像的质量和处理速度。以下是cv2.INTER_AREAcv2.INTER_CUBICcv2.INTER_NEARESTcv2.INTER_LINEARcv2.INTER_LANCZOS4 的对比:

在这里插入图片描述

根据上述对比:

  • 如果目标是快速缩小图像且可以接受一定的质量损失,应选择 cv2.INTER_NEAREST

  • 如果需要在缩小图像时保持较高的质量,应选择 cv2.INTER_AREA

  • 对于需要在放大和缩小图像时都保持较好质量的应用, cv2.INTER_CUBICcv2.INTER_LINEAR 是较好的选择,具体取决于是否可以接受较慢的处理速度。

  • 当图像质量是最重要的,尤其是在放大图像时,应选择 cv2.INTER_LANCZOS4,尽管这会牺牲处理速度。

一般在做训练数据预处理时,缩小图像使用 cv2.INTER_AREA,放大图像使用 cv2.INTER_CUBIC

def image_resize(img, size):
	if img.shape[0] > size:
		# 基于像素区域关系的重采样,适用于图像缩小,尤其是图像抽取,可以避免摩尔纹现象
		img = cv2.resize(img, (size, size), interpolation=cv2.INTER_AREA)
	elif img.shape[0] < size:
		# 基于4x4像素邻域的三次插值,适用于图像放大和缩小,能够提供较高的图像质量,但计算量相对较大
		img = cv2.resize(img, (size, size), interpolation=cv2.INTER_CUBIC)
	return img

参考文档:
https://blog.csdn.net/guyuealian/article/details/85097633

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值