【发布时间】:2013-10-14 20:31:51
【问题描述】:
我能够很好地读取图像的头文件,但是我无法将红色通道的第一个数据值(例如 206)放入二维数组 ppmImage.red[0][0]。接下来是一个空白,然后是绿色通道的第一个值,依此类推。
以下是我目前正在做的事情,而不是 ppmImage.red[0][0] 中的 206,我有 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”。
我搜索了一些信息,结果比现在更加困惑。我会很感激朝着正确的方向轻推或有人指出我的愚蠢。提前致谢。
【问题讨论】:
标签: c++ arrays image multidimensional-array