1. ホーム
  2. パイソン

PIL経由で画像を読み込むとpythonエラーが発生します。OSError: 画像ファイルを特定できない

2022-02-09 17:31:53

原因 オペレーティングシステムが指定されたタスク(ファイルを開くなど)を実行できない場合に発生します。
ここでは、大量の画像を扱っていますが、一部の画像が開けないため、OSErrorエラーが発生します。

回避策 try accept を使用して、この例外を解決します。また、この画像を削除することもできます。

import os
from PIL import Image
import shutil

'''train'''
path = '/Users/xuqiong/AgeGender/test_img_process/1_allface/valid/' # indicates the folder to name the process
pathnew = '/Users/xuqiong/AgeGender/test_img_process/2_allcrop/valid/'
filelist = os.listdir(path) #Get the file path
#cbox = [0,0,0,0]
i = 0
for item in filelist:
    i = i + 1
    if i%500 == 0:
        print(i)
    if item == '.DS_Store':
        continue
    imgpath = path+item
    imgpathnew = pathnew + item

    try:
        img = Image.open(imgpath)
        h = img.height
        w = img.width

        if (h > 5*w) or (w > 5*h):
            os.remove(imgpath)
            continue
        else:
            shutil.move(imgpath, imgpathnew)

    except(OSError, NameError):
        print('OSError, Path:',imgpath)