将像素转换为黑白

时间:2017-11-30 20:28:00

标签: python c message pixels

我习惯在python中编程,并且正在尝试教朋友如何在c中编程。我能够教他基础知识,但他很快就会考试,我很乐意能够帮助他,但是我自己却无法将一些代码从python转换为c。 例如,他被提出了一个问题..

程序应该使用循环读取pixelsIn.txt.file中的灰度像素值。程序读入文件的行。图像的主体包含图片中每个主体的灰度值,程序应该确定像素值是否等于110,如果是,程序应该将此像素值转换为225(白色),否则应该转换回到0(黑色)。

enter image description here

如果我在python中这样做,我会读取每一行,拆分行然后使用for循环来检查数字是否为110。但是我非常不确定这是如何在C中完成的? 对不起,如果我是模糊的,但如果我不够清楚,我会回答任何问题。任何帮助将不胜感激。

例如,在左侧的下面的微小图像中,使用像素值110对字母H进行编码。这是 因为周围的像素具有非常接近的灰度值,所以在左手图像上不是很清楚。 如果消息像素值更改为255(白色)并且非消息像素值更改为0 (黑色)右侧的图像然后清楚地显示隐藏的H

1 个答案:

答案 0 :(得分:1)

我会考虑您已在FILE *image中打开图片,阅读图片的标题P2,将其宽度保存到int width,将高度保存到int height并阅读最大强度255

您只需要使用imagefscanf的每个像素进行迭代,即可读取每个整数。以下是C:

中的示例代码
int i, j, **matrix = malloc(height * sizeof(int *));
for (i = 0; i < height; i++) {
    matrix[i] = malloc(width * sizeof(int))
    for (j = 0; j < width; j++) {
        int pixel;
        fscanf(image, "%d", &pixel);
        matrix[i][j] = (pixel == 110) ? 255 : 0;
    }
}

之后,您更改的图像将位于矩阵中。你只需要保存它。

希望它有所帮助。