keras.preprocessing.image.load_img "UnidentifiedImageError"



我正在努力学习Keras的图像分割教程。它似乎在Colab中运行良好,但在本地运行时,我得到以下错误:

for j, path in enumerate(batch_target_img_paths):
img = load_img(path, target_size=self.img_size, color_mode="grayscale")
...
Exception has occurred: UnidentifiedImageError
cannot identify image file <_io.BytesIO object at 0x0000020130390400>
File "C:Computer Visionmain_tutorial.py", line 203, in __getitem__
img = load_img(path, target_size=self.img_size, color_mode="grayscale")
File "C:Computer Visionmain_tutorial.py", line 102, in main
model.fit(train_gen, epochs=epochs, validation_data=val_gen, callbacks=callbacks)
File "C:Computer Visionmain_tutorial.py", line 211, in <module>
main()

我已经验证了路径是正确的:

C:Computer Visionoxford-iiit-pettrainannotations._Abyssinian_10.png

有问题的文件._Abyssinian_10.png似乎不是有效的图像(我认为它是目标掩码(,无法在常规图像查看应用程序中打开。

是否存在我遗漏的环境或平台问题?

如果您面临此错误,则图像可能已损坏或为NoneType

根据我的经验,你无法挽救这个图像,最好用下面的代码删除它,检查图像是否作为PNG有效,如果不是,则删除图像。如果您有JPEG图像,那么您可以只使用jpeg

您必须在映像的整个目录上运行此操作。

import cv2
import imghdr
import os
image_path = "C:Computer Visionoxford-iiit-pettrainannotations._Abyssinian_10.png"
image = cv2.imread(image_path)
img_type = imghdr.what(image_path)
if img_type != "png":
os.remove(image_path)

这个错误是我的错误。

annotations/trimaps文件夹包含每个原始图像的两个文件:

._Abyssinian_1.png

Abyssinian_1.png

我试图加载不正确的文件._Abyssinian_1.png,我本应在其中加载Abyssinian_1.png

最新更新