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

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

  • 文件夹形式为一个数据集MyImagenet,路径为 /home/lihuanyu/code/03AdaBins/img_data/MyImagenet/ ,有train,test和val三个文件夹,每个文件夹又有若干的类别子文件夹,子文件夹是每一个类别的图片。
  • 判断图片是否是灰度图片或者RGBA图片(4通道),若是进行 Image.open(img_path+img_name).convert('RGB') 处理转换为RGB三通道图片,否则不进行处理,直接将原图片复制到新文件夹。
  • 最后将遍历的所有图片按照输入的存储形式重新存入 /home/lihuanyu/code/03AdaBins/MyImagenet_process ,MyImagenet_process下也是有train,test和val三个文件夹,每个文件夹又有若干的类别子文件夹,子文件夹是每一个类别的图片。
  • 以python语言形式呈现。
  • 需要打印处理流程:处理到那张图片和处理完成的标志。
  • import os import shutil from PIL import Image # 原始数据集路径 img_data_root = "/home/lihuanyu/code/03AdaBins/img_data/MyImagenet/" # 经过处理后的数据集路径 img_processed_root = "/home/lihuanyu/code/03AdaBins/MyImagenet_process/" # 遍历原始数据集的所有图片 for mode in [ 'train' , 'test' , 'val' ]: img_mode_path = os.path.join(img_data_root, mode) processed_mode_path = os.path.join(img_processed_root, mode) for class_name in os.listdir(img_mode_path): img_class_path = os.path.join(img_mode_path, class_name) processed_class_path = os.path.join(processed_mode_path, class_name) # 如果新文件夹不存在则创建 if not os.path.exists(processed_class_path): os.makedirs(processed_class_path) for img_name in os.listdir(img_class_path): img_path = os.path.join(img_class_path, img_name) processed_img_path = os.path.join(processed_class_path, img_name) # 判断图片是否是灰度图或者4通道图 img = Image. open (img_path) if img.mode == "L" or img.mode == "RGBA" : # 进行转换为RGB三通道图片的操作 img = img.convert( 'RGB' ) print ( "Converting image {}..." . format (img_path)) else : # 直接复制图片到新文件夹 shutil.copy(img_path, processed_img_path) print ( "Copying image {}..." . format (img_path)) # 保存图片到新文件夹 img.save(processed_img_path) print ( "Done!" )

    代码可以成功运行

    安静到无声 博士研究生 @ 中国石油大学
    粉丝