首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >keras.preprocessing.image.load_img "UnidentifiedImageError“

keras.preprocessing.image.load_img "UnidentifiedImageError“
EN

Stack Overflow用户
提问于 2021-03-13 20:17:51
回答 2查看 282关注 0票数 0

我正在尝试按照this的Keras教程来进行图像分割。它似乎在Colab中运行得很好,但在本地运行时,我得到了以下错误:

代码语言:javascript
复制
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似乎不是有效的图像(我相信它是目标蒙版),并且无法在常规图像查看应用程序中打开。

有没有我遗漏的环境或平台问题?

EN

回答 2

Stack Overflow用户

发布于 2021-03-13 21:21:22

如果您遇到此错误,则图像可能已损坏或属于NoneType

在我的经验中,你不能抢救这个图像,你最好用下面的代码删除它,它检查图像是否有效作为PNG,如果不是,则删除图像。如果你有JPEG镜像,那么你可以直接使用jpeg

你将不得不在你的图像的整个目录上运行它。

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2021-03-13 21:33:19

这个错误是我的错误。

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

._Abyssinian_1.png

Abyssinian_1.png

我试图在本应加载Abyssinian_1.png的位置加载错误的._Abyssinian_1.png文件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66613418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档