我正在尝试按照this的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 Vision\main_tutorial.py", line 203, in __getitem__
img = load_img(path, target_size=self.img_size, color_mode="grayscale")
File "C:\Computer Vision\main_tutorial.py", line 102, in main
model.fit(train_gen, epochs=epochs, validation_data=val_gen, callbacks=callbacks)
File "C:\Computer Vision\main_tutorial.py", line 211, in <module>
main()我已经验证了路径是正确的:
C:\Computer Vision\oxford-iiit-pet\train\annotations\._Abyssinian_10.png
有问题的文件._Abyssinian_10.png似乎不是有效的图像(我相信它是目标蒙版),并且无法在常规图像查看应用程序中打开。
有没有我遗漏的环境或平台问题?
发布于 2021-03-13 21:21:22
如果您遇到此错误,则图像可能已损坏或属于NoneType。
在我的经验中,你不能抢救这个图像,你最好用下面的代码删除它,它检查图像是否有效作为PNG,如果不是,则删除图像。如果你有JPEG镜像,那么你可以直接使用jpeg。
你将不得不在你的图像的整个目录上运行它。
import cv2
import imghdr
import os
image_path = "C:\Computer Vision\oxford-iiit-pet\train\annotations\._Abyssinian_10.png"
image = cv2.imread(image_path)
img_type = imghdr.what(image_path)
if img_type != "png":
os.remove(image_path)发布于 2021-03-13 21:33:19
这个错误是我的错误。
对于每个原始图像,annotations/trimaps文件夹包含两个文件:
._Abyssinian_1.png
Abyssinian_1.png
我试图在本应加载Abyssinian_1.png的位置加载错误的._Abyssinian_1.png文件
https://stackoverflow.com/questions/66613418
复制相似问题