Bild in Graubild in C



  • Hi,

    ich will ein Farbbild in Graubild umwandeln. Das Bild wird in Form rrrrrrrrr...gggggggggggggg...bbbbbbbbbbbbbbbbbb... eingelesen. Also habe ich die Pixel getrennt und nach Formel umgewandelt.

    int main(.................)
    {
    unsigned char *img;
    int *gray_img;
    int width;
    int height;
    int psize;
    int x;
    int grauwert;
    .
    .
    .
    Pixel werden gelesen (argv[1], &img, &width, &height)

    .
    .
    .

    for (x=0; x<psize; x++)//psize Bild grösse
    {
    int r,g,b;
    r=img[x];
    g=img[x+psize];
    b=img[x+psize2];;
    // fprintf(out,"%i\t%i\t%i\n",r,g,b);
    grauwert = (r*299 + g*587 + b
    114)/1000;
    grau_img[x]=grauwert;
    }

    Dann soll gray_image an die Ausgabefunktion übergeben werden

    write("Bild_new.tif", gray_img, width, height );

    return 0;

    warning C4700: local variable 'gray_img' used without having been initialized
    Kann mir eine Helfen. DANKE



  • Du mußt ja auch noch Speicher dafür allokieren, s. malloc (und am Ende wieder mit free freigeben).



  • Danke erstmal, hab dann folgendes gemacht

    int main(.................)
    {
    unsigned char *img;
    int *gray_img;
    int width;
    int height;
    int psize;
    int x;
    int grauwert;
    .
    .
    .
    Pixel werden gelesen (argv[1], &img, &width, &height)

    .
    .
    .
    ➡ gray_img = (unsigned char *)malloc((psize*3) * sizeof(unsigned char));

    for (x=0; x<psize; x++)//psize Bild grösse
    {
    int r,g,b;
    r=img[x];
    g=img[x+psize];
    b=img[x+psize2];;
    // fprintf(out,"%i\t%i\t%i\n",r,g,b);
    grauwert = (r*299 + g*587 + b
    114)/1000;
    grau_img[x]=grauwert;
    }

    Dann soll gray_image an die Ausgabefunktion übergeben werden

    write("Bild_new.tif", gray_img, width, height );
    ➡ free(gray_img);
    return 0;

    warning C4013: 'malloc' undefined; assuming extern returning int
    warning C4013: 'free' undefined; assuming extern returning int

    Jetzt habe ich das Problem, das die ersten Pixel werden wie vorgesehen umgewandelt dann werden aber trotzdem die gggggg und bbbbbbb Pixel auf ein Wert gesetzt (bei mir 205) und das Bild wird natürlich nicht umgewandelt.



  • Danke hab das Problem behoben


Log in to reply