0

私は本当に奇妙なエラーを抱えています、

そのため、ピクセル値を配列にロードして pgm イメージを読み込もうとしています。そのバージョン、高さ、幅、および可能な最大ピクセル値を正しく読み取ることができました。ただし、ピクセル値の読み取りを開始すると、常に 0 になります (matlab で imread を使用して読み取ることができるため、ゼロではないことはわかっていますが、c++ で実装する必要があり、さらに opencv ライブラリを使用できませんでした。 .)

さらに、メモ帳++のようにpgmファイルを読み取ると、最初の数行はこの画像に関する情報を表すのに適していますが、実際のピクセル値は読み取れません。pgm イメージを読み取るために何らかの解析が必要かどうか疑問に思っていますか? そのバージョンは p5 です。

ありがとう!

4

1 に答える 1

2

それ以外の場合、PGM リーダーを実装する正当な理由がないため、解決する課題が必要です。

ASCII とバイナリの 2 つの異なる PGM 形式があります。あなたはASCII PGMを期待しているようですが、あなたが持っているのはバイナリです。

仕様をご覧ください: http://netpbm.sourceforge.net/doc/pgm.html

それは言います:

/1. ファイルの種類を識別するための「マジック ナンバー」。pgm イメージのマジック ナンバーは " P5 " の 2 文字です。

[…]

/9. 上から下への高さ行のラスター。各行は、左から右の順に幅のグレー値で構成されます。各グレー値は 0 ~ Maxval の数値で、0 が黒、Maxval が白です。各グレー値は、1 バイトまたは 2 バイトの純粋なバイナリで表されます。Maxval が 256 未満の場合は、1 バイトです。それ以外の場合は 2 バイトです。最上位バイトが最初です。

あなたが期待しているフォーマットは、 Plain PGMフォーマットとして以下でさらに説明されています。マジックナンバーは「P2」。

于 2013-11-15T03:46:55.537 に答える