图片数据增强-resize(不同插值)、各种模糊

将图片批量进行不同的数据增强处理,并保存到不同的文件夹下。

各种不同的模糊处理

python 复制代码
import os
import cv2


def apply_blur_to_images(input_folder_path, output_folder_path):
    # 遍历文件夹下的所有文件
    for filename in os.listdir(input_folder_path):
        # 检查文件类型是否为图片
        if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
            # 构建输入图片的完整路径
            input_image_path = os.path.join(input_folder_path, filename)

            # 读取图片
            image = cv2.imread(input_image_path)

            # 根据不同的模糊方法进行处理
            for blur_method in ['gaussian', 'mean', 'median', 'bilateral']:
                # 创建对应的模糊文件夹
                output_blur_folder_path = os.path.join(output_folder_path, blur_method)
                os.makedirs(output_blur_folder_path, exist_ok=True)

                # 根据选择的模糊方法进行处理
                if blur_method == 'mean':
                    blurred_image = cv2.blur(image, (15, 15))
                elif blur_method == 'median':
                    blurred_image = cv2.medianBlur(image, 15)
                elif blur_method == 'bilateral':
                    blurred_image = cv2.bilateralFilter(image, 15, 75, 75)
                else:
                    blurred_image = cv2.GaussianBlur(image, (15, 15), 0)

                # 构建输出图片的完整路径
                output_image_path = os.path.join(output_blur_folder_path, filename)

                # 保存模糊处理后的图片
                cv2.imwrite(output_image_path, blurred_image)


if __name__ == '__main__':
    # 文件夹不要有中文!!!!!!!!!
    # 输入文件夹路径
    input_folder_path = './data'
    # 输出文件夹路径
    output_folder_path = './output'

    # 调用函数
    apply_blur_to_images(input_folder_path, output_folder_path)

resize 下采样

python 复制代码
import os
import cv2


def reduce_resolution(input_folder_path, output_folder_path, scale_factor, interpolation):
    # 遍历文件夹下的所有文件
    for filename in os.listdir(input_folder_path):
        # 检查文件类型是否为图片
        if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
            # 构建输入图片的完整路径
            input_image_path = os.path.join(input_folder_path, filename)

            # 读取图片
            image = cv2.imread(input_image_path)

            # 计算目标宽度和高度
            target_width = int(image.shape[1] * scale_factor)
            target_height = int(image.shape[0] * scale_factor)

            # 调整图像尺寸
            resized_image = cv2.resize(image, (target_width, target_height), interpolation=interpolation)

            # 构建输出图片的完整路径
            interpolation_name = get_interpolation_name(interpolation)
            output_folder = os.path.join(output_folder_path, interpolation_name)
            os.makedirs(output_folder, exist_ok=True)  # 创建输出文件夹(如果不存在)
            output_image_path = os.path.join(output_folder, filename)

            # 保存调整尺寸后的图片
            cv2.imwrite(output_image_path, resized_image)


def get_interpolation_name(interpolation):
    if interpolation == cv2.INTER_NEAREST:
        return 'INTER_NEAREST'
    elif interpolation == cv2.INTER_LINEAR:
        return 'INTER_LINEAR'
    elif interpolation == cv2.INTER_CUBIC:
        return 'INTER_CUBIC'
    elif interpolation == cv2.INTER_LANCZOS4:
        return 'INTER_LANCZOS4'
    else:
        return 'UNKNOWN'


if __name__ == '__main__':
    # 文件夹不要有中文!!!!!!!!!
    # 输入文件夹路径
    input_folder_path = './data'
    # 输出文件夹路径
    output_folder_path = './output'

    # 比例系数
    scale_factor = 0.5  # 调整为原始图像的一半

    # 插值方法列表
    interpolations = [cv2.INTER_NEAREST, cv2.INTER_LINEAR, cv2.INTER_CUBIC, cv2.INTER_LANCZOS4]

    # 遍历插值方法
    for interpolation in interpolations:
        # 调用函数进行图像尺寸调整
        reduce_resolution(input_folder_path, output_folder_path, scale_factor, interpolation)

遍历文件夹,结果以名字命令,方便区分

相关推荐
井底哇哇14 分钟前
ChatGPT是强人工智能吗?
人工智能·chatgpt
Coovally AI模型快速验证19 分钟前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
AI浩44 分钟前
【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
人工智能·深度学习·计算机视觉·transformer
可为测控1 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
一水鉴天1 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
倔强的石头1062 小时前
解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘
人工智能·架构
佛州小李哥2 小时前
Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
说私域3 小时前
社群裂变+2+1链动新纪元:S2B2C小程序如何重塑企业客户管理版图?
大数据·人工智能·小程序·开源
程序猿阿伟3 小时前
《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
人工智能·华为·harmonyos
2401_897579653 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter