画像のヘッダー ファイルは正常に読み取ることができますが、赤チャネルの最初のデータ値 (206 など) を 2D 配列に入れるのに問題がありますppmImage.red[0][0]
。空白が続き、その後に緑のチャンネルの最初の値が続きます。
以下は私が現在行っていることであり、206 が にある代わりに、ppmImage.red[0][0]
= ppmImage.red[0][0]
2、ppmImage.green[0][0]
=0、およびppmImage.blue[0][0]
=6 があります。参考までに、これらは 8 ビット値のみであるため、赤、緑、青はピクセル タイプであり、unsigned char
.
void readTextData(fstream &fin, struct ppmImage &image)
{
int iii, jjj;
for(iii = 0; iii < image.rows ; iii++)
{
for(jjj = 0; jjj < image.cols; jjj++)
{
fin >> image.red[iii][jjj];
fin >> image.green[iii][jjj];
fin >>image.blue[iii][jjj];
}
}
fin.close();
}
fin >>
空白にぶつかるまで読むと思っていたのですが、間違っていました。私も使用してみfin.read((char *) & image.redgray[iii][jjj],sizeof(pixel));
ましたが、結果は同じでした。
データは次のような形式になります。
1 2
3 4 5
6 7 8 9
そして、「\ n」をどのように処理するかわかりません。
私は情報を検索しましたが、今まで以上に混乱してしまいます。正しい方向への微調整や、私の愚かさを指摘してくれる人に感謝します。前もって感謝します。