in imageinput.c Hilfsfunktionen und readimages implementiert, 2 von 6 passes

This commit is contained in:
fischerch103508 committed 2026-11-09 23:18:13 +01:00
1 parent 127f93301f
commit 570e3fa930
2 files changed
+53 -17

No files matched your search

+52 -17
View File
@@ -7,48 +7,83 @@
#define FILE_HEADER_STRING "__info2_image_file_format__"
// TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei
static unsigned short readNumberOfImages(const char *path)
static unsigned short readNumberOfImages(FILE *file)
{
unsigned short numberOfImages = 0;
fseek(path, sizeof(char)*strlen(FILE_HEADER_STRING)-1, SEEK_SET);
fread(numberOfImages, sizeof(unsigned short), 1, path);
fseek(file, strlen(FILE_HEADER_STRING), SEEK_SET);
fread(&numberOfImages, sizeof(unsigned short), 1, file);
return numberOfImages;
}
static unsigned short readImageWidth(const char *path)
static unsigned short readImageWidth(FILE *file)
{
unsigned short ImageWidth = 0;
fseek(path, sizeof(unsigned short), SEEK_CUR);
fread(ImageWidth, sizeof(unsigned short), 1, path);
fseek(file, sizeof(unsigned short), SEEK_CUR);
fread(&ImageWidth, sizeof(unsigned short), 1, file);
return ImageWidth;
}
static unsigned short readImageHeight(const char *path)
static unsigned short readImageHeight(FILE *file)
{
unsigned short ImageHeight = 0;
fseek(path, sizeof(unsigned short), SEEK_CUR);
fread(ImageHeight, sizeof(unsigned short), 1,path);
fseek(file, sizeof(unsigned short), SEEK_CUR);
fread(&ImageHeight, sizeof(unsigned short), 1, file);
return ImageHeight;
}
static *readImage(const char *path, unsigned short ImageWidth, unsigned short ImageHeight)
static GrayScalePixelType *readImage(FILE *file, unsigned short ImageWidth, unsigned short ImageHeight)
{
fseek(path, sizeof(unsigned short), SEEK_CUR);
fread(path, sizeof(char), ImageHeight*ImageWidth, path);
GrayScalePixelType *image = malloc(ImageHeight*ImageWidth*sizeof(GrayScalePixelType));
fseek(file, sizeof(unsigned short), SEEK_CUR);
fread(image, sizeof(char), ImageHeight*ImageWidth, file);
return image;
}
static GrayScalePixelType readLabel(FILE *file)
{
unsigned char label;
fseek(file, sizeof(unsigned short), SEEK_CUR);
fread(&label, sizeof(unsigned char), 1, file);
return label;
}
// TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen
GrayScaleImageSeries *readImages(const char *path)
{
GrayScaleImageSeries *series = NULL;
FILE *file = fopen(path, "wb");
FILE *file = fopen(path, "rb");
if (file == NULL)
{
return NULL;
}
unsigned short numberOfImages = readNumberOfImages(file);
unsigned short imageWidth = readImageWidth(file);
unsigned short imageHeight = readImageHeight(file);
GrayScaleImageSeries *series = malloc(sizeof(GrayScaleImageSeries));
if(series == NULL)
{
fclose(file);
return NULL;
}
series->count = numberOfImages;
series->images = malloc(numberOfImages * sizeof(GrayScaleImage));
series->labels = malloc(numberOfImages * sizeof(unsigned char));
for(int i = 0; i < numberOfImages; i++)
{
series->images[i].width = imageWidth;
series->images[i].height = imageHeight;
series->images[i].buffer = readImage(file, imageWidth, imageHeight);
series->labels[i] = readLabel(file);
}
fclose(file);
return series;
}
+1
View File
@@ -0,0 +1 @@
some_tag