προσπαθώ να δημιουργήσω ένα πρόγραμμα το οποίο θα διαβάζει μία εικόνα raw τύπου, θα την αποθηκεύει σε έναν πίνακα unsigned char και έπειτα θα πρέπει να τον μετατρέψει σε float. Επίσης θέλω να διαβάζει μετά, ανά 8 και να τα αποθηκεύει σε κελιά float πάλι διαφορετικού πίνακα 8 * 8.
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
int fromdisk(char imfile[],image a,int ND1,int MD1,int N,int M)
/* Subroutine to read an image from a disk file.
imfile: OS file name (string)
a: image array of dimensions N,M
ND1,MD1: starting point on the buffer a
N,M: image dimensions in the file imfile */
{ FILE *fp;
unsigned char * buc;
int i,j;
if (a==NULL) return(-1);
if(N<0 || M<0 || N>NMAX || M>MMAX) return(-21);
if(ND1<0 || MD1<0 || ND1+N>NMAX || MD1+M>MMAX)
return(-22);
if((fp=fopen(imfile,"rb"))==NULL) return(-300);
buc=(unsigned char *)
malloc((unsigned int)M*sizeof(unsigned char));
if(buc==NULL) return(-10);
for(i=0; i<N; i++)
{ fread(buc,sizeof(unsigned char),M,fp);
for(j=0; j<M; j++) a[i+ND1][j+MD1]=buc[j];
}
free(buc); fclose(fp);
return(0);
}
main(int argv,char *argc[]){
int l,i,j;
unsigned char **imgMatrix;
float **imgflMatrix,**dctMatrix;
image A;
A=matuc2(512,512);
imgMatrix=matuc2(512,512); // η matuc2 kai η matf2 είναι απλά αρχικοποιήσεις των πινάκων με χρήση μίας συνάρτησης.
imgflMatrix=matf2(512,512);
dctMatrix=matf2(8,8);
l=fromdisk(argc[1],imgMatrix,0,0,512,512); // η fromdisk διαβάζει την εικόνα σε μορφή raw και την βάζει στον πίνακα imgMatrix τύπου unsigned char
for(i=0;i<512;i++)
for(j=0;j<512;j++)
imgflMatrix[i][j] = (float) imgMatrix[i][j];


