Converting Bitmap into 2D-Array
Hi everyone ,
I'm doing image processing for the first time with VC++ 6.0 .
I would like to create a function which takes a grayscale bitmap image
and convert it
to a 2D array where each element represents one of the image's
pixel intensities for further purposes e.g. to calculate the fft.
here is how my code(maybe laughable for some of you) looks like:
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
struct bitmap
{
int Size; /* Size of the image */
int res; /* reserved zone */
int offset; /* address of the beginning of the image */
int info; /* size of the zone information */
int width; /* Width of the image */
int height ; /* Height of the image */
int tim; /* Size of the image in bytes */
int Hres; /* horizontal resolution */
int Vres; /* vertical resolution */
int nbco; /* number of colors used */
int impco; /* number of important colors */
};
typedef struct
{
unsigned width, height;
char *data;
} BMP_Data;
int** read_file(filename)
{
bitmap *bitmap;
char sign[3];
int gray_value;
ifstream file;
int c=bitmap.width;
int** StoreBmp=new int[bitmap.width][bitmap.height];//grayvalues of
pixel
file.open(filename,ios::binary|ios::in);
if (!file)
{
printf("Can not open the file.\n",filename);
return NULL;
}
if (bitmap->bitmap.width <= 0 || bitmap->bitmap.height <= 0)
{
printf("\nThe file %s contains false imagesize.",filename);
goto error_exit;
}
/*before i get at the end of the file I should put all the grayvalues
in the StoreBmp*/
while(!file.eof()
{
for (int i=0;i<bitmap->height;i++)
{
for (int j=0;j<bitmap->width;j++,c--)
{
/* I don't know how I can introduce
StoreBmp hier */
file.get(sign),
}
}
}
file.close();
/* I'm not sure if I can write something like this because i can have
to delete the memory reserved by the keyword new */
return StoreBmp;
}
Would anyone give me some helpfull hints?I'm using VC++ 6.0 under
WinXP.
Thank you