0
点赞
收藏
分享

微信扫一扫

使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo

使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo

任务需求

Imganet数据集,由于原始图片有灰度图片、彩色图片和RGBA图片,我们的要求是将灰度图片和RGBA图片通过Image.open(img_path+img_name).convert('RGB')转换为RGB三通道图片重新保存起来。

要求点

  1. 文件夹形式为一个数据集MyImagenet,路径为/home/lihuanyu/code/03AdaBins/img_data/MyImagenet/,有train,test和val三个文件夹,每个文件夹又有若干的类别子文件夹,子文件夹是每一个类别的图片。
  2. 判断图片是否是灰度图片或者RGBA图片(4通道),若是进行Image.open(img_path+img_name).convert('RGB')处理转换为RGB三通道图片,否则不进行处理。
  3. 最后将遍历的所有图片按照输入的存储形式重新存入/home/lihuanyu/code/03AdaBins/MyImagenet_process,MyImagenet_process下也是有train,test和val三个文件夹,每个文件夹又有若干的类别子文件夹,子文件夹是每一个类别的图片。
  4. 以python语言形式呈现。
  5. 需要打印处理流程:处理到那张图片和处理完成的标志。

代码实现

import os  
from PIL import Image  
  
# 定义函数,将原始图像转换为 RGB 图像  
def convert_to_rgb(img_path, img_name):  
    img = Image.open(os.path.join(img_path, img_name))  
    if img.mode == '1' or img.mode == 'RGBA':  
        img = img.convert('RGB')  
    return img  
  
# 定义函数,保存 RGB 图像到指定路径  
def save_image(img, save_path):  
    if not os.path.exists(save_path):  
        os.makedirs(save_path)  
    save_name = os.path.splitext(img.filename)[0] + '.jpg'  
    save_path = os.path.join(save_path, save_name)  
    img.save(save_path)  
    return save_path  
  
# 设置数据集路径和保存路径  
data_path = '/home/lihuanyu/code/03AdaBins/img_data/MyImagenet/'  
save_path = '/home/lihuanyu/code/03AdaBins/MyImagenet_process/'  
  
# 遍历 train、test 和 val 文件夹  
for folder in ['train', 'test', 'val']:  
    folder_path = os.path.join(data_path, folder)  
  
    # 遍历每个类别子文件夹  
    for class_folder in os.listdir(folder_path):  
        class_path = os.path.join(folder_path, class_folder)  
  
        # 遍历每张图像  
        for img_name in os.listdir(class_path):  
            img_path = os.path.join(class_path, img_name)  
            print('Processing:', img_path)  
  
            # 打开图像并进行 RGB 转换  
            rgb_img = convert_to_rgb(class_path, img_name)  
  
            # 保存 RGB 图像到指定位置  
            save_folder = os.path.join(save_path, folder, class_folder)  
            save_image(rgb_img, save_folder)  
  
            print('Saved to:', save_folder)  
  
print('Images processed and saved.')

代码可以成功运行

在这里插入图片描述

举报

相关推荐

0 条评论