我能够很好地读取图像的头文件,但是我无法将红色通道的第一个数据值(例如 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'。
我搜索了信息,结果比我现在更加困惑。我会很感激朝着正确的方向轻推或有人指出我的愚蠢。提前致谢。