- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
首先,我在 AI 的大学小组中执行一项任务。我有一个 PGM P2(ASCII) 格式的多面数据集。在开始神经网络处理之前,我需要从图像中提取像素数组,但我找不到用 Python 读取这些图像的方法。
我已经尝试过 PIL,但它不适用于 PGM P2。
我可以在 Python 中执行此操作吗?任何帮助将不胜感激。
最佳答案
我知道现在回答有点晚了,但我遇到了同样的问题,我认为发布我的解决方案可能会有用。似乎不存在在 Python 上读取基于 ASCII 的 PGM (P2) 的库。
这是我的函数,它接受文件名并返回一个元组,其中包含:(1) 一个包含数据的 1xn numpy 数组,(2) 一个包含长度和宽度的元组,(3)灰色阴影。
import numpy as np
import matplotlib.pyplot as plt
def readpgm(name):
with open(name) as f:
lines = f.readlines()
# Ignores commented lines
for l in list(lines):
if l[0] == '#':
lines.remove(l)
# Makes sure it is ASCII format (P2)
assert lines[0].strip() == 'P2'
# Converts data to a list of integers
data = []
for line in lines[1:]:
data.extend([int(c) for c in line.split()])
return (np.array(data[3:]),(data[1],data[0]),data[2])
data = readpgm('/location/of/file.pgm')
plt.imshow(np.reshape(data[0],data[1])) # Usage example
关于python - 如何在 Python 中读取 PGM P2 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46944048/
#include void lower_string(char*); int main() { char string[100]; printf("Enter
如何使用 Java 将二进制 PGM 文件转换为 ASCII PGM 文件? 当我使用以下代码时,我无法在 B.pgm 中写入 ASCII 值。我也尝试过使用dos.writeInt。 FileInp
我正在尝试对 pgm 执行卷积类型图像 P5 (二进制)使用以下设置: 输入输出数组 vector> image(rows, vector(cols, '\0')); vector> out(rows
我的机器上安装了 zmq 版本 4.1.3 和 pyzmq 版本 15.2.0(我假设是通过 pip 但我现在不记得了)。我需要连接到 UDP epgm 套接字,但收到错误“协议(protocol)不
我目前正在做一个学生项目,它对灰度 pgm 文件进行一些图像处理(膨胀和腐 eclipse )。我试图对图像对象实现扩张,但得到了奇怪的结果。我预计图像对象会比原始图像大。但是根据我使用的内核大小,我
以下代码适用于管理员帐户,但对于非管理员帐户,它会打印两次成功然后抛出 System.Net.Sockets.SocketException (0x80004005):尝试以其禁止的方式访问套接字访问
我需要在库 netpbm/pgm 中创建拉普拉斯运算符。处理图像很简单 - 我计算每个像素。我不使用标准化,因为我知道它是 0 并且我想简化解决方案。 我的代码: #include #include
我需要为类项目创建 PGM 图像的单个灰度直方图。我已经有了读取 PGM 图像的代码。但是我不完全理解如何计算唯一的像素值。我不需要输出图表或类似的东西。任何帮助将不胜感激! 读取PGM图像的代码 h
int i, j; for (i = (*pgm).height - 1; i >= 0; i--) for (j = 0; j < (*pgm).width; j++)
您好,我有一个关于读取 pgm 值的底部值的问题。我制作了一个 2d 动态数组,并为高度和宽度添加了 2 个额外的空格,以便能够创建缓冲区,但是当我尝试读取时将第一个整数设置为 width+1 它不起
我正在尝试自学数字图像处理。我已将我的 pgm 读入结构中。在这个结构中我有像素数组。我可以打印得很好。现在我想根据用户输入裁剪这张照片。我接受这些输入并根据输入的坐标得到一个黑色矩形。我做错了什么?
我正在尝试使用这段代码编写一个 pgm 文件.. myfile (image), (sizeRow*sizeColumn)*sizeof(unsigned char)); 如果我尝试将其写入 .txt
我有一个非常奇怪的错误, 所以我尝试通过将其像素值加载到数组中来读取 pgm 图像,我能够正确读取其版本、高度、宽度和最大可能像素值。然而,当我开始读取像素值时,我总是得到 0。(我知道它不是零,因为
我的目标是读入 PGM 图像并生成颜色值反转的图像。但是当我输入 this image ,我回来了this image .我在 C 中编程,在 Windows 7(64 位)上使用 Eclipse 和
我正在尝试从 .pgm 图像文件 (mars.pgm) 的 header 读取大小值,并使用 sscanf 将结果值分配给整数变量 u 和 v。 程序执行时在第一行打印 P5 832 700 127,
我正在尝试读取和重写 PGM 图像,但它会导致形状困惑。右图为原图,左图为重制图: 这是我正在使用的代码: #include #include #include #include using
我有一百个 128 x 128 的 .pgm 文件,上面有一些形状,我认为它们的色阶是 255(虽然不确定这个,所以如果解决方案也可以接受它会很好考虑),我需要提取这些颜色来处理图像。所以我想最终得到
我有一个包含 0-254 灰度值的 int 数组,我还有图像的 x 和 y 大小。创建 pgm 图像是一件容易的事情,但我想在 jsp 中显示它,所以我需要以某种方式将其转换为 jpeg 或 png
我已经被这个问题困扰了一段时间了。我如何将 pgm 文件中的像素值 0-255 复制到数组中?这是我到目前为止所拥有的。我知道我偏离了应有的样子。 #include #include int ma
我正在尝试将 JavaScript 中的 Canvas 转换为 pgm。在我转换文件并将其下载到我的 table 面后,它具有 pgm 扩展名,但是当我用编辑器打开它时,它被编码为 png。我认为
我是一名优秀的程序员,十分优秀!