首页 文章

无法读取正确的pgm像素值

提问于
浏览
0

我有一个非常奇怪的错误,

所以我试图通过将像素值加载到数组中来读取pgm图像,我能够正确读取其版本,高度,宽度和最大可能像素值 . 但是,当我开始读取像素值时,我总是得到0.(我知道它不是零,因为我可以在matlab中使用imread读取它,但是必须在c中实现它,而且我不能使用opencv库 . . )

此外,当我在NotePad中读取pgm文件时,前几行很好地代表了有关此图像的信息,但实际的像素值是不可读的 . 我想知道我是否需要某种解析来读取pgm图像?它的版本是p5 .

谢谢!

1 回答

  • 2

    您必须有一个要解决的任务,否则没有理由实施PGM阅读器 .

    有两种不同的PGM格式:ASCII和二进制 . 您似乎期望ASCII PGM,但您拥有的是二进制 .

    看看规格:http://netpbm.sourceforge.net/doc/pgm.html

    它说:

    / 1 . 用于识别文件类型的“神奇数字” . pgm图像的幻数是两个字符“P5” . [...] / 9 . 高度行的栅格,按从上到下的顺序排列 . 每行由宽度灰度值组成,按从左到右的顺序排列 . 每个灰度值是从0到Maxval的数字,0表示黑色,Maxval表示白色 . 每个灰度值以纯二进制表示1或2个字节 . 如果Maxval小于256,则为1个字节 . 否则,它是2个字节 . 最重要的字节是第一个 .

    您期望的格式将在下面进一步描述为 Plain PGM 格式 . 它的幻数是"P2" .

相关问题