Python中使用cv2.resize()函数批量自定义缩放图像尺寸

常用插值缩放方法

cv2.resize()函数中的interpolation参数指定了图像缩放时使用的插值方法。以下是常用的插值方法:

cv2.INTER_NEAREST:最近邻插值。该方法通过选择最接近目标像素的原始像素来进行插值。它是最快速的插值方法,但可能会导致锯齿状边缘效果。

cv2.INTER_LINEAR:双线性插值。该方法通过使用原始像素的线性组合来计算目标像素的值。它比最近邻插值提供了更平滑的结果,但在缩小图像时可能会丢失细节。

cv2.INTER_CUBIC:双三次插值。该方法在双线性插值的基础上使用了更多的邻近像素,以获得更高质量的缩放结果。它比双线性插值计算量更大,但效果更好。

cv2.INTER_LANCZOS4:Lanczos插值。该方法使用Lanczos算法来计算目标像素的值。它在缩放图像时提供了更好的保真度,但计算量较大。

cv2.INTER_AREa:适用于缩小图像,不会失真,详细细节推荐参考博文:OpenCV里的INTER_AREA究竟是在做啥?

缩放示例

在这里插入图片描述

代码


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()函数批量自定义缩放图像尺寸的方法,学者根据自己的缩放需求使用对应的缩放参数,多多支持,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_40280673/article/details/134018946