我正在编写一个程序来操纵图像.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中遗漏了什么?
答案 0 :(得分:0)
img2.data[i].gray = 0;
img2
是struct的指针,因此您无法直接访问其成员。你必须写:
(*img2).data[i].gray = 0;
或:
img2->data[i].gray = 0;