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 + b114)/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 + b114)/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 intJetzt 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