Bonjour,
J'essaye de sauvegarder une matrice a trois ou plus dimensions en fichier .raw de facon a pouvoir les ouvrirs sous imagej.
j'ai ma matrice nommee data (c'est une multi_array de la librairie boost).
admettons qu'elle fasse une taille de 3x865x568.
j'essaye donc de faire 3 fichiers .raw avec chacun une matrice 865x568.
les dimensions de la matrice sont stockes dans ma class ainsi que le nombre de bytes par elements donc ceci n'est pas un probleme. (la par exemple je suis en int).
j'ai essaye le code:
mais ca ne marche pas. ca m'ecrit un fichier de taille 8ko au lieu de 994 ko.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void Images::save_binaryFile() { cout << "saving the images" << endl; //calculation of the size of one slice int length1 = tsize[0][0]*tsize[0][1]*2; //tsize is a table with the size of the dimensions of each matrix used in the program. ofstream binaryFile ("test_image.raw", ios::out | ios::binary); binaryFile.write((char*)&data,length1); //sizeof(&data) or sizeof(data) binaryFile.close(); }
j'ai remarque que sizeof(data) me retourne 160 alors que c'est une matrice de taille 3*568*865*2.
du coup je suis assez surpris par ce que me retourne sizeof(data).
quelle erreur ais-je faite ?
Merci d'avance
Partager