我正在根据我的教授给出的模板编写一个程序来处理图像.PPM。模板具有以下结构:
typedef struct {
unsigned char gray;
} PPMGrayPixel;
typedef struct {
int x, y;
PPMGrayPixel *data;
} PPMGrayImage;
我正在尝试将常规.ppm转换为灰度.ppm。实际上,在这种情况下,我已经有一个空的灰度图像,其大小与原始图像相同。该灰度文件只有一个颜色通道(原始通道有三个)。我对要转换的公式还可以,但是我想在尝试访问灰度文件的元素时缺少某些内容。
我不担心设置正确的数字,我只想现在设置黑白的值。我想确保我正在访问正确的像素。
这是我的代码:
PPMGrayImage * ConvertToGrayFromColorImage(PPMImage *img) {
PPMGrayImage *img2;
img2 = CreateEmptyGrayImageFromColorImage(img);
for (int i=0; i < img2->x*img2->y; i++) {
if (i % 2 == 0) {
img2.data[i].gray = 0;
}
else {
// sign 1
}
}
我是否在问题逻辑或sintax中缺少某些东西?
最佳答案
img2.data[i].gray = 0;
img2
是指向struct的指针,因此您不能直接访问其成员。你必须写:(*img2).data[i].gray = 0;
要么:
img2->data[i].gray = 0;