问题标签 [pgm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
438 浏览

perl - Perl 读取 PGM 文件

我什至无法在 perl 中读取 pgm 文件。有谁知道如何做到这一点?(pgm 文件是二进制版本而不是 ASCII)

这是我的代码,我试图只读取 pgm 文件的标题部分:

0 投票
0 回答
580 浏览

pgm - 无法在 Matlab 中读取 PGM 图像

我正在尝试在 Matlab 中读取 pgm 图像:

我收到一个错误:

使用 imread 时出错(第 382 行)无法确定文件格式。

我应该怎么办?

0 投票
2 回答
2537 浏览

java - 尽可能快地从 PGM 或 TIFF 创建 JavaFX 图像

我正在使用 java 从扫描仪设备捕获图像。输入格式是 PGM 或 TIFF。我必须在用户界面中显示实时结果。实际上,我使用ImageJ将源输入流读取为 tiff,因为 ImageJ 还可以处理不完整的流。之后,ImagePlus对象被转换为 aBufferedImage并最终转换为 JavaFX Image

这是非常缓慢的。我需要一种更快的方法来Image从 PGM 或 TIFF 流创建 JavaFX。似乎 JavaFX 实际上不支持这种格式,我也没有找到有用的库。

任何想法?

编辑#1

我决定分两步优化图像捕获。首先,在更新 ui 中的图像时,我需要更好的状态控制。这实际上已经完成并且工作正常。现在,当转换线程忙时,更新请求被丢弃。第二步是使用自行实现的 pnm 阅读器(基于建议的实现)并逐步更新我的模型中的图像......直到扫描过程完成。从设备加载图像时,这应该会减少所需的资源。我需要改变我的架构的某些部分来实现这一点。

谢谢@大家的意见。

顺便说一句:java 8 lambda 很棒:)

编辑#2

我的计划行不通,因为 JavaFX 的线程测试 :(

目前我的WritableImage后端有一个应该逐步填充数据。此图像实例设置ObjectProperty为最终绑定到ImageView. 由于WritableImage连接到 ,ImageView因此无法使用PixelWriter. 这会导致异常。

我的解决方法是创建图像的副本,但我不喜欢这种解决方案。也许可以阻止自动更改通知并手动执行此操作?

0 投票
1 回答
418 浏览

c++ - DevIL 库:将灰度图像保存在三个矩阵中,而不是一个

我需要制作一个程序,将 RGB 图像转换为 GRAYSCALE 图像并将其保存为 PGM 格式。我使用 DevIL 库,但是当我保存图像时,我总是获得一个 3D 图像(3 个矩阵),灰度,但是,如果我在 MATLAB 中加载它,我有 3 个矩阵而不是只有一个。如何使用 DevIL 在输出文件中仅获取一个矩阵?

}

0 投票
0 回答
1811 浏览

python - 在 python 中更改 PPM 文件

大家好,我有一个我创建的 PGM,并且想逐行读入 python

有没有一种快速简便的方法来做到这一点,因为我想改变每个说紫色像素的 LSB

谢谢

编辑

好的,输入图像是我们大学的PNG文件,

在此处输入图像描述

这是我到目前为止的代码:

它需要隐藏文本和图像,图像被转换为​​ PPM,这就是我陷入困境的地方

我希望能够读取 PPM 图像,并更改紫色的 LSB,最好是图像中的最后一个紫色圆圈

代码:

编辑 2

我现在已经读入数据:

我想新的问题是我怎样才能只针对图像中的最后一个圆圈来改变?

0 投票
2 回答
1134 浏览

java - Android 将 base64Binary pgm 解析为 Bitmap

我需要将 pgm 格式的 base64Binary-string 转换为 android 中的位图。所以我没有通常的 base64 编码位图。base64binary-string 来自一个 xml 文件

<ReferenceImage Type="base64Binary" Format="pgm" WidthPX="309" HeightPX="233" BytesPerPixel="1" > NDY4Ojo9QEFDRUVHRklLTE9OUFFTU1VWV1hZWltZWVlZWlpbW1xdXmBgYmJjZGNlZWRkZGRlZmZnZ2ZnaWpqa21ub29ubm9vb3BwcHBxcHFyc3FzcnJzcnJydH[...]VlaW1xbWltcXFxcXFxd.

我想我了解 pgm 图像通常存储为 ASCII(如在我的 xml 中)或二进制(0..255)。我也认为Base64.decode需要二进制变量,而不是我拥有的 ASCII。但是BitmapFactory.decodeByteArray不理解解码的字节数组并返回 null。

那么如何将我的 base64binary-pgm-ASCII-string 转换为有效的字节数组以创建有效的位图?

0 投票
1 回答
2908 浏览

pgm - 简单的原始二进制图像文件格式

我正在寻找一种像 PGM 一样简单但以二进制编码的原始图像文件格式,以便我可以突发​​写入像素。我搜索了维基百科和谷歌,发现没有一个没有开始有复杂的标题等。有人可以推荐我这种类型的文件格式吗?

0 投票
5 回答
4901 浏览

c++ - 水平翻转数组?

我正在尝试将一个 pgm 文件 [只是一个像素矩阵,设置行和设置列] 放入一个数组中,水平翻转它,然后再次输出。这就是我阅读它的方式:

所以基本上,图片的第二行包含 2 个值:行和列。例如,300 和 500 表示图片有 300 行和 500 列。如您所见,上面的函数将该行读入 numRows 和 numCols。

在后面的函数中,我试图通过交换像素对来水平翻转图片(例如,最右边的像素与第一个像素,最右边的像素减去第一个像素 + 1 等到中间。 )

这是我的功能:

这有什么问题?它只是输出与原始图片完全相同的图片。它应该像我描述的那样逐行切换每个元素。你们能不能用新鲜的眼光来看看这个?我已经追踪了一段时间,但我无法弄清楚。

编辑: 我将代码更改为:

我只是得到一个乱码。这是原件: http: //i493.photobucket.com/albums/rr294/Jamlegend/mammoth_zps31b72d88.png 和后面的图片:http: //i493.photobucket.com/albums/rr294/Jamlegend/after_zpsdf1a8b40.png

0 投票
2 回答
490 浏览

java - 读取 .pgm 图像时在 Java 和 Matlab 之间具有不同的值

我必须为我的机器学习课程准备一个训练集,其中对于给定的面部图像,它会给你一个代表头部侧面的答案(直、左、右、上)

为此,我需要在 java 中读取 .pgm 图像文件并将其像素存储在矩阵 X 的一行中,然后将该图像的适当正确答案存储在 ay 向量中。最后,我会将这两个数组保存在 .mat 文件中。

问题是当尝试从 (P2 .pgm) 图像中读取像素值并将它们打印到控制台时,它们不会与 matlab 矩阵查看器给出相同的值。会有什么问题?

这是我的代码:

这些是我得到的值:50 49 32 50 32 49 32 48 32 50 32 49 56 32 53 57

虽然这张照片确实是来自 MATLAB Viewer 的图像:(抱歉,由于缺乏声誉,我无法发布图像)

这就是您通过记事本++ 打开 .pgm 文件时发现的内容

0 投票
2 回答
2175 浏览

java - 读取和写入 PGM 文件

作为一项家庭作业,我们应该读入一个 .pgm 文件,然后通过更改像素值来绘制一个正方形,然后输出新图像。在我完成并更改像素后,我将它们全部打印到 .txt 中,以检查它们是否真的被添加了。我遇到问题的部分是编写新文件。我知道它应该是二进制的,所以在谷歌搜索后我认为我应该使用 DataOutputStream,但我可能是错的。在我写完文件后,它的大小是 1.9MB,而原始文件只有 480KB,所以我马上就怀疑一定有问题。任何关于写入 .pgm 文件的建议或技巧都会很棒!

当我尝试打开新文件时,我收到一条错误消息,提示“非法图像格式”,并且原始文件可以正常打开。