
💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《图像增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》

推荐一个解释的非常好的链接:插值算法
一、常用插值缩放方法
cv2.resize()函数中的interpolation参数指定了图像缩放时使用的插值方法。以下是常用的插值方法:
cv2.INTER_NEAREST:最近邻插值。该方法通过选择最接近目标像素的原始像素来进行插值。它是最快速的插值方法,但可能会导致锯齿状边缘效果。
cv2.INTER_LINEAR:双线性插值。该方法通过使用原始像素的线性组合来计算目标像素的值。它比最近邻插值提供了更平滑的结果,但在缩小图像时可能会丢失细节。
cv2.INTER_CUBIC:双三次插值。该方法在双线性插值的基础上使用了更多的邻近像素,以获得更高质量的缩放结果。它比双线性插值计算量更大,但效果更好。
cv2.INTER_LANCZOS4:Lanczos插值。该方法使用Lanczos算法来计算目标像素的值。它在缩放图像时提供了更好的保真度,但计算量较大。
cv2.INTER_AREA:适用于缩小图像,不会失真,详细细节推荐参考博文:OpenCV里的INTER_AREA究竟是在做啥?
二、缩放示例
下面是一个缩放的例子:

三、代码
下面是完整的代码,需要使用什么缩放方式,修改interpolation参数:
import os
import cv2
# 获取文件路径
folder_path = "E:/SR_Images/DIV2K_theml/DIV2K_train_HR"
output_path = "E:/SR_Images/DIV2K_theml/DIV2K_train_LR_bicubic/X2"
# 获取文件夹中所有的文件
file_list = os.listdir(folder_path)
# 遍历文件列表
for file_name in file_list:
# 拼接文件路径
file_path = os.path.join(folder_path,file_name)
# 仅处理图像文件
if os.path.isfile(file_path) and file_name.lower().endswith(('.png','.jpg','.jpeg','.bmp')):
# 读取图像路径
image = cv2.imread(file_path)
# 获取图像原尺寸
height,width = image.shape[:2]
# 计算缩放后的尺寸
new_heiht = int(height / 2)
new_width = int(width / 2)
# 缩放图像
resized_image = cv2.resize(image,(new_width,new_heiht),interpolation=cv2.INTER_CUBIC) # 例子中使用了双三次插值
# 保存缩放后的图像
output_file = file_name[:-4] + "x2.png"
cv2.imwrite(os.path.join(output_path,output_file),resized_image)
四、总结
以上就是使用cv2.resize()函数批量自定义缩放图像尺寸的方法,学者根据自己的缩放需求使用对应的缩放参数,希望能帮到你!
感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖
关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

本文详细介绍了OpenCV中常用的图像缩放插值方法,如最近邻、双线性、双三次和Lanczos插值,并通过Python代码展示了如何使用cv2.resize()函数进行批量缩放,特别提及了INTER_AREA的特殊用途。
&spm=1001.2101.3001.5002&articleId=134018946&d=1&t=3&u=5e89298e088a4654aa2cf5ca0bc27615)
4321

被折叠的 条评论
为什么被折叠?



