Merhaba arkadaşlar hocamızın verdiği bir ödevde bir dosyadan çekilen resmin histogramını oluşturmamız isteniyor. Yardımcı olabilecek varsa sevinirim.
Örnek bir kodlama.
#include<stdio.h>
int *xsize, *ysize;
int get_image(char *filename, int im[][500], int *size, int *ysize)
{
FILE *infile;
int i, j;
if ((infile= fopen (filename, "r"))!=NULL)
{
fscanf(infile, "%d %d", *xsize, *ysize);
for (i = 0; i<*ysize; i++)
for (j = 0; j<*xsize;j++)
fscanf(infile, "%d", &im[i][j]);
return 1;
}
else
return 0;
}
/* Histogramı bulma işlemleri. Dosyanın j uzantısı maksimum 500 karater olabilir. Histogram içeriğiyse 256
karakter*/
void find_histogram(int image[][500], int *xsize, int *ysize, int hist[256])
{
int i, j;
for (i = 0;i<256;hist[i++]=0);/i yi 0 dan başlat. 256ya kadar saydır. Ardından histi 1 arttır./
for (i = 0;i<ysize;i++)/*i yi y ye kadar 1 arttır./
for (j = 0;j<xsize;j++)/*j yi x e kadar 1 arttır./
hist[image[i][j]++];/Histogram içerisinde image i 1 arttır./
}
void print_histogram(int hist[256])/histogram yazdırılacak./
{
int i;
for (i=0;i<256;i++)/i yi 0 olarak başlat ve 256 ya kadar dönder./
printf("%d\n", hist[i]);/histogramın içerisine i yi double olarak yazdır ve alt satıra geç/
}
void main(void)/program buradan itibaren çalışmaya başlar./
{
char filename[100];
int image[500][500], histogram[256], xsize, ysize, file_ok;
printf("Enter the image file name:");
scanf("%s", filename);
file_ok = get_image(filename, image, &xsize, &ysize);
if (file_ok == 0)
{
printf("File error.\n");
}
else {
find_histogram(image, xsize, ysize, histogram);
print_histogram(histogram);
}
}