【问题标题】:Invalid argument: Expected image (JPEG, PNG, or GIF), got unknown format starting with 'RIFF\320\025\000\000WEBPVP8 '无效参数:预期的图像(JPEG、PNG 或 GIF),格式未知,以 'RIFF\320\025\000\000WEBPVP8 ' 开头
【发布时间】:2019-11-25 13:45:35
【问题描述】:

我使用 tensorflow2.0 来训练一些照片。起初我使用其他人收集的口袋妖怪数据(近 1000 张照片)。我成功地制作了模型。

然后我想用我自己的照片。数量很少,只有 20 张照片。我运行代码(似乎成功):

[https://i.stack.imgur.com/cq204.png]

但收到错误

:Invalid argument:   Expected image (JPEG, PNG, or GIF), got unknown format starting with 'RIFF\320\025\000\000WEBPVP8 '

[https://i.stack.imgur.com/msjiz.png]

我猜这是我照片的错误。 金额是否太少?还是照片的类型不对?

我查了一下,都是JPG或者PNG格式

【问题讨论】:

  • 看起来您的图像不是 JPG 或 PNG,无论您认为它是。这是一个 RIFF 文件en.wikipedia.org/wiki/Resource_Interchange_File_Format
  • 尝试将其转换为 jpeg 并查看它是否有效 - 如果有效,则您有不同的图像格式不受支持
  • 那么兄弟我该如何解决呢?因为我不知道哪些照片的类型是错误的。

标签: python tensorflow photo tensorflow2.0


【解决方案1】:

实际上,您在数据集中的一个文件的文件类型不是指定的 JPEG、PNG 或 GIF 格式。尽管任何人都可以很容易地将文件的扩展名误认为是这些格式之一,但文件的实际内容不是适当的格式。

这就是我所做的,

我不知道我的数据目录中的哪个文件是RIFF 格式(就像你的情况一样),所以我决定打印文件的二进制内容并手动检查它。 [这是蛮力的方式,这就是当时让我震惊的地方!]

我写了这个 sn-p 来帮助我做到这一点

import os
for i, filename in enumerate(os.listdir('./')):
    with open(filename, 'rb') as imageFile:
        if imageFile.read().startswith(b'RIFF'):
            print(f"{i}: {filename} - found!")

我在所有类文件夹上运行了这个 sn-p,发现这些文件夹中确实有一个文件具有 RIFF 格式,我也得到了文件的名称,它不是适当的格式,然后就被删除了目录中的那个文件。这解决了我的问题。

【讨论】:

    猜你喜欢
    • 2020-10-14
    • 2019-10-10
    • 2020-01-03
    • 1970-01-01
    • 2018-08-20
    • 2021-09-12
    • 2021-08-01
    • 1970-01-01
    • 2023-01-16
    相关资源
    最近更新 更多