做cv的朋友经常要接触图片,在做图像处理(筛选、重命名、质量检查)时千万要注意图像是否损害,其实很容易判断的时图片能不能正常打开,另一种容易被忽视的图片损坏就是图像截断,如线图所示:
上述都是可以正常打开的图片,但是属于截断,在做图像前处理时很容易引起错误,在用别人的框架训练推理模型时有时会出错,这是个很简单但容易被忽视,可通过如下简单的脚本进行检查此类损坏。
def check_img_if_normal_or_damage(img_dir, bad_data_dir):
img_files= os.listdir(img_dir)
for img_file in tqdm.tqdm(img_files):
img_path= os.path.join(img_dir, img_file)
try:
img=Image.open(img_path).convert("RGB")
except:
logger.info(f"open error: {img_path}")
bad_img_path = os.path.join(bad_data_dir, img_file)
shutil.move(img_path, bad_img_path)
else:
pass