【发布时间】:2012-02-27 16:26:09
【问题描述】:
我正在尝试在 C 程序中编写 PGM 文件,但是一旦写入,如果我尝试打开它来查看图像,就会被告知无法确定图像文件格式。
但是,如果我在 geany 中创建一个新文件,将数据复制过来,然后将其另存为新的 PGM,它就可以工作。
知道为什么会这样吗?
FILE * grey = fopen("greyscale.pgm", "w");
fprintf(grey, "P2 \r\n%d %d \r\n255 \r\n", width, height);
for (i = 0; i < width; i++) {
for (j = 0; j < height; j++) {
fprintf(grey, "%d ", ((imageArray[i][j].red + imageArray[i][j].green + imageArray[i][j].blue)/3));
}
fprintf(grey, "\r\n");
}
我正在将彩色图像转换为灰度图像。
【问题讨论】:
-
它可能与您的 PGM 文件的标题有关。您能添加创建 PGM 文件的代码吗?
-
将 RGB 转换为灰色时,1/3 不是一个好的系数。试试
0.299R + 0.587G + 0.114B,这是一个广泛使用的公式。 -
谢谢,伯努瓦。这个公式看起来好多了。