图像转换 - 无法从另一个内部的struct访问该元素

时间:2014-07-13 23:23:50

标签: c image-processing struct

我正在编写一个程序来操纵图像.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中遗漏了什么?

1 个答案:

答案 0 :(得分:0)

img2.data[i].gray = 0;

img2是struct的指针,因此您无法直接访问其成员。你必须写:

(*img2).data[i].gray = 0;

或:

img2->data[i].gray = 0;