使用 PIL 和 SKIMAGE 打开 PGM 文件时出错

2023-12-08

我有以下图像文件:

Image

我使用 PIL 和 Skimage 打开它,但出现以下错误

首先使用 PIL(尝试使用和不使用 trucate 选项): 代码:

from PIL import Image, ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
img = Image.open("image_output.pgm")

Erorr:

OSError: cannot identify image file 'image_output.pgm'

和 Skimage 一样:

Code:

from skimage import io
img = io.imread("image_output.pgm")

Error:

OSError: cannot identify image file <_io.BufferedReader name='image_output.pgm'>

我可以使用 GUI 应用程序(例如系统照片查看器和 Matlab)打开该文件。

如何诊断图像有什么问题?我将字节数据与可以在 Python 中打开的其他 PGM 文件进行了比较,但无法识别差异。

Thanks.


你的文件是P2 type PGM,这意味着它是 ASCII 格式 - 您可以在普通文本编辑器中查看它。看来两者都不是PIL, nor skimage想要阅读该内容,但很高兴阅读相应的内容P5type 是相同的,只是它是用二进制而不是 ASCII 编写的。

有几个选项...


1)你可以使用OpenCV阅读它:

import cv2
im = cv2.imread('a.pgm')

2)你可以将其转换为P5 with 图像魔术师然后阅读output.pgm文件与skimage or PIL:

magick input.pgm output.pgm

3)如果添加OpenCV, or 图像魔术师因为依赖对你来说是一种真正的痛苦,所以它是possible自己读取 PGM 图像:

#!/usr/bin/env python3

import re
import numpy as np

# Open image file, slurp the lot
with open('input.pgm') as f:
   s = f.read()

# Find anything that looks like numbers
# Technically, there could be comments that should be ignored
l=re.findall(r'[0-9P]+',s)

# List "l" will contain: P5, width, height, 255, pixel1, pixel2, pixel3...
# Technically, if l[3]>255, you should change the type of the Numpy array to uint16, but that is not the case
w, h = int(l[1]), int(l[2])

# Make Numpy image from data
ni = np.array(l[4:],dtype=np.uint8).reshape((h,w))

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PIL 和 SKIMAGE 打开 PGM 文件时出错 的相关文章

随机推荐

  • 如何获取卷 GUID

    我正在使用 win32 apiC 我想知道如何使用 设备路径 获取卷 GUID 我的设备如下所示 usb vid 04f2 pid 0111 5 39fe81e 0 2 a5dcbf10 6530 11d2 901f 00c04fb951e
  • JavaScript cookie 删除

    如果我用 Javascript 创建一个 cookiedocument cookie unseen 当我离开此页面时如何删除它 这是我在页面上创建的唯一 cookie 运行这个 document cookie unseen expires
  • PHP:Imagick:合并透明图像

    我想将透明PNG合并到另一个图像中 但是PNG的边框不会按照需要更改为透明
  • 跟踪 GA 中的主题标签和查询字符串

    我有一些贴纸 其中包含我网站的 URL 二维码 如下所示 我会把它贴在街上 正如你所看到的 如果有人阅读了这个二维码 他就会转发到http issocial net qr page 现在我想跟踪通过此二维码贴纸访问我的网站的人 遗憾的是 G
  • 在 MATLAB 中向现有矩阵添加新列?

    我有一个包含两列的矩阵 其中一列是日期 另一列是我必须执行一些操作的数量 我想在现有矩阵中添加第三列 我打算通过将第三列表示为列向量 然后将其添加到我现有的矩阵中来解决此问题 尽管我不确定如何将另一列添加到矩阵中 任何帮助将不胜感激 对于第
  • 无法激活 IDL 中定义的投影类型

    我试图在 IDL 中定义 Windows 运行时类型 并使用其投影类型 从默认生成的空白应用程序UWP 项目 称为 空白应用程序 我补充说 我的控件 idl namespace BlankApp default interface runt
  • Android推送服务,实现gcm服务器端

    我对 Android 推送世界还是个新手 几天来我一直在挣扎 我毫无问题地创建并实现了它的 GCM 客户端 我还创建了我的谷歌云项目 启用了android推送notif s并得到了我的Project Number Project ID an
  • FluentNHibernate 字典映射

    使用 Fluent NHibernate 映射简单 Dictionary 属性的最佳方法是什么 public class PersistedData public virtual IDictionary
  • 如何使用 TFS 2010 SDK 获取分支的所有未合并变更集?

    目前我有 2 个分支 开发和发布 是否可以获得从开发到发布的所有未合并变更集 目前我们使用默认的合并向导 然而它有一个很大的限制 它不能按用户过滤 因此 我正在考虑构建一个应用程序 它将所有未合并的变更集从开发拉到发布 并允许我按用户过滤这
  • Erlang VM (BEAM) 是如何构建列表的?

    当我在 Erlang 中创建列表时 例如在 Erlang shell 中 1 gt 1 2 据我了解 在虚拟机中 该列表将表示为单链表 Erlang 运行时如何创建这个结构 例如 它的构造是这样的 在内存中创建一个结构来保存终止列表的列表
  • 具有相同 GroupId 的多个 Kafka 监听器都接收消息

    我在 Spring Boot 应用程序中配置了一个 kafka 监听器 如下所示 KafkaListener topicPartitions TopicPartition topic data all partitions 0 1 2 gr
  • 如何从多个线程安全地写入套接字?

    我正在使用 asio 非升压 创建一个 TCP 服务器 虽然我的代码可以工作 但它没有正确完成 因为我正在调用asio async write来自多个线程 我think我应该使用股线 但我读得越多 我就越迷失 include
  • 如何将包含科学记数法的字符串转换为正确的 Javascript 数字格式

    我有一个字符串e g 4 874915326E7 将其转换为 JavaScript 数字格式的最佳方法是什么 整数或浮点数 如果我尝试 parseInt E最后被忽略 Edit 这个答案似乎引起了一些混乱 最初的问题是问如何将字符串形式的科
  • 判断Oracle null == null

    我希望在可为空的列上搜索数据库表 有时我要搜索的值本身就是 NULL 因为 Null 等于什么都没有 甚至是 NULL 所以说 where MYCOLUMN SEARCHVALUE 将失败 现在我必须求助于 where MYCOLUMN S
  • 如何创建充当链接的 TextView

    我有一个Textview地点 例如 加利福尼亚州山景城 我想要实现的是创建这个文本以充当链接 颜色 下划线 可聚焦性等 此链接不需要指向任何地方 周围视图已附加 onClick 侦听器 该侦听器会触发谷歌地图意图 像这样的东西应该有效 Te
  • 如何使用部署在 Kubernetes 上的 Flink 运行 Beam Python 管道?

    有谁知道当 Flink 在 Kubernetes 中作为 Pod 运行时如何使用 Flink 运行 Beam Python 管道 我已经成功地使用 Portable runner 和指向在 Docker 容器中运行的本地 Flink 服务器
  • 在android中为ListView中的每一行制作动态布局

    我有一个 xml 文件 其中包含 ListView 每一行的基本布局 这是一个真实的布局 里面有 TextView 我想更改 ListView 每一行的此布局的属性 例如每行的不同布局宽度和高度 我想动态设置宽度和高度的值 有什么办法可以做
  • Cloud Run 在 121 秒后崩溃

    我正在使用 PubSub 主题和订阅触发器触发长时间运行的抓取 Cloud Run 函数 每次我运行它时 它都会在 121 8 秒后崩溃 但我不明白为什么 POST 503 556B 121 8s APIs Google https dev
  • Android 中的 NETWORK_ERR:XmlHttpRequest 异常 101

    我正在为 android 手机开发一个移动应用程序 每当我运行它时 我都会收到以下错误 network err xmlhttprequest 异常 101 有人可以澄清一下吗 我使用的是安卓4 2版本 下面的代码是mainActivity
  • 使用 PIL 和 SKIMAGE 打开 PGM 文件时出错

    我有以下图像文件 Image 我使用 PIL 和 Skimage 打开它 但出现以下错误 首先使用 PIL 尝试使用和不使用 trucate 选项 代码 from PIL import Image ImageFile ImageFile L