Я пытаюсь загрузить набор данных изображений, используя keras.load_img , который возвращает экземпляр изображения PIL , но не могу сделать это из-за некоторых причина. Изображение было создано с помощью следующих строк кода после его создания модулем imagaug из python, который возвращает numpy массив :
img = augmenter(image=image)
img = Image.fromarray(img)
img.save(os.path.join(os.path.dirname(__file__), 'Roll 1_Augmented', 'PaperPrintImgAug' + str(i+1) + '_' + str(j) + '.jpg'))
Кажется, что iamges успешно сохранены, и я могу открыть их с помощью любого средства просмотра изображений. Поэтому я не думаю, что они испорчены. Но всякий раз, когда я пытаюсь открыть изображения с помощью load_img, я получаю следующую ошибку:
Traceback (most recent call last):
File "ae.py", line 61, in readImages
img = load_img(folder_path[i], target_size=inputShape)
File "/home/ies/billa/miniconda3/envs/pfprint/lib/python3.6/site-packages/keras_preprocessing/image/utils.py", line 114, in load_img
img = pil_image.open(io.BytesIO(f.read()))
File "/home/ies/billa/miniconda3/envs/pfprint/lib/python3.6/site-packages/PIL/Image.py", line 2896, in open
"cannot identify image file %r" % (filename if filename else fp)
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f7350df9e08>
Я пробовал различные решения, предоставленные онлайн и в stackoverflow, но ситуации, похоже, не совпадают с моими. После загрузки последней версии Pillow я получил следующее изменение в трассировке:
File "/home/ies/billa/miniconda3/envs/pfprint/lib/python3.6/site-packages/keras_preprocessing/image/utils.py", line 114, in load_img
img = pil_image.open(io.BytesIO(f.read()))
File "/home/ies/billa/miniconda3/envs/pfprint/lib/python3.6/site-packages/PIL/Image.py", line 2006, in open
raise IOError("cannot identify image file")
OSError: cannot identify image file
Я подозреваю, что это может быть проблема с кодировкой изображения. Может ли кто-нибудь помочь мне с этим, пожалуйста?
EDIT:
Проблема была решена путем сохранения изображений как png
файлов.
Для проблема с файлами JPEG, я использовал следующий код:
from tensorflow.python.keras.preprocessing.image import load_img
def readImages(folder_path):
images = []
for i in range(len(folder_path)):
img = load_img(folder_path[i], target_size=inputShape)
img = np.array(img)
images.append(img)
images = np.array(images)
return images
augdata = glob('/home/ies/billa/Roll 1_Augmented/*')
augmentedImages = readImages(augdata)