如何解决部分图片读取转化异常的问题
问题描述
接触到一个数据集,有个别图片在读取转化的时候出现了异常,由于图片之间有关联,导致后续图片无法时候。
解决方法
将异常的图片转为白色或者黑色的图片,保证其他的图片可以正常使用!代码如下:
import glob
from PIL import Image
imglist = 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
指定的路径。
需要注意的是,这段代码会在存在问题的图像路径处创建一个空白图像,而不仅仅是打印出问题。如果你希望避免覆盖原始文件,你需要对代码进行相应的修改。