问题描述
接触到一个数据集,有个别图片在读取转化的时候出现了异常,由于图片之间有关联,导致后续图片无法时候。
解决方法
将异常的图片转为白色或者黑色的图片,保证其他的图片可以正常使用!代码如下:
import glob
from PIL import Imageimglist = glob.glob('Wildtrack/Image_subsets/*/*.png')
image_bug=[]
for imagepath in imglist:try:image_pil = Image.open(imagepath).convert('RGB')except Exception as ex:image_bug.append(imagepath)for image_path in image_bug:print(image_path)# shutil.rmtree(image_path)img = Image.new('RGB', (1920, 1080), (255, 255, 255))# 保存图片img.save(image_path)这段Python代码是用于处理特定目录下的PNG图像文件的。它使用Pillow库(PIL)和glob库来完成任务。下面是代码的逐步解释:
- import glob: 导入glob模块,这个模块提供了一个函数来处理通配符匹配。
- from PIL import Image: 从PIL(Python Imaging Library,也称为Pillow)导入Image模块,这个模块提供了对图像的各种操作。
- imglist = glob.glob('Wildtrack/Image_subsets/*/*.png'): 使用glob的glob函数,匹配’Wildtrack/Image_subsets’目录下所有子目录中的所有PNG图像文件,并将这些文件的路径存储在imglist列表中。
- image_bug=[]: 创建一个名为- image_bug的空列表,用于存储出现错误的图像路径。
- for imagepath in imglist:: 对imglist列表中的每个图像路径进行遍历。
- try:: 尝试以下操作:- image_pil = Image.open(imagepath).convert('RGB'): 使用PIL的Image模块打开图像文件,并将其转换为RGB模式。
 
- except Exception as ex:: 如果在尝试过程中出现任何异常,则执行以下操作:- image_bug.append(imagepath): 将出现问题的图像路径添加到- image_bug列表中。
 
- for image_path in image_bug:: 对- image_bug列表中的每个图像路径进行遍历。
- print(image_path): 打印出存在问题的图像路径。
- img = Image.new('RGB', (1920, 1080), (255, 255, 255)): 使用PIL的Image模块创建一个新的RGB图像,尺寸为1920x1080,背景色为白色(255,255,255)。
- img.save(image_path): 将新创建的空白图像保存到- image_path指定的路径。
需要注意的是,这段代码会在存在问题的图像路径处创建一个空白图像,而不仅仅是打印出问题。如果你希望避免覆盖原始文件,你需要对代码进行相应的修改。