не могу прочитать правильные значения пикселей pgm

У меня действительно странная ошибка,

поэтому я пытаюсь прочитать изображение pgm, загрузив его значения пикселей в массив, я смог правильно прочитать его версию, высоту, ширину и максимально возможное значение пикселя. Однако, когда я начинаю читать значения пикселей, я всегда получаю 0. (Я знаю, что это не ноль, потому что я могу прочитать его, используя imread в matlab, но мне нужно реализовать его на c ++, плюс я не мог использовать библиотеку opencv так. .)

И кроме того, когда я читаю pgm-файл в виде NotePad ++, первые несколько строк хороши, представляя информацию об этом изображении, однако фактические значения пикселей не читаются. Мне интересно, нужен ли мне какой-то синтаксический анализ для чтения изображений в формате pgm? Его версия — p5.

Спасибо!

0

Решение

У вас должно быть задание для решения, так как в противном случае нет разумной причины для реализации считывателя PGM.

Существует два разных формата PGM: ASCII и двоичный. Кажется, вы ожидаете ASCII PGM, но у вас есть двоичный файл.

Посмотрите на спецификации: http://netpbm.sourceforge.net/doc/pgm.html

Это говорит:

/ 1. «Магическое число» для определения типа файла. ПГМ изображения
магическое число двух персонажейP5».

[…]

/ 9. Растр высотных рядов в порядке сверху вниз. Каждый ряд
состоит из значений ширины серого в порядке слева направо. Каждый серый
значение — это число от 0 до Maxval, где 0 — черный, а Maxval —
быть белым. Каждое значение серого представлено в чистом двоичном виде либо
1 или 2 байта.
Если Maxval меньше 256, это 1 байт.
В противном случае это 2 байта. Самый старший байт — первый.

Формат, который вы ожидаете, описан ниже как Обычный ПГМ формат. Его магическое число — «P2».

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]