Bonjour
je m'y connais pas trop dans l'allocation dynamique, mais j'en ai besoin pour allouer une grande taille de données.
j'ai une image Tiff de grande taille, je veux la charger dans une matrice dynamique ( vu qu'avec la statique les grande tailles c'est pas possible)
enfin bref je veux utiliser fread successivement afin de lire la premiere ligne (12000 premiers bytes ou 6000 Word) ensuite je la réutilise pour la deuxieme ligne et ainsi de suite.
je sais que ca se fait mais je sais pas le aire, et en plus je ne sais pas si fread prend en compte les matrices, ou elle charge uniquement dans des vecteurs?
pour le moment mon programme ressemble a ça
mais à l'exécution sur la ligne Matrice[i][j]= ptr[i][j]; il me fait une erreur : "le projet a provoqué une classe d'exception avec le message débordement de pile"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 //Déclaration const T=6000; Word** ptr=new Word*[T]; //j'utilise Word car les données sont codées sur 16bits for(int i=0;i<T;i++) //allocation dynamique de ptr le pointeur que je vais utiliser dans fread ptr[T] = new Word[T]; Word ** Matrice=new Word*[T]; for(int i=0;i<T;i++) //allocation dynamique de la matrice qui va contenir l'image Matrice[T] = new Word[T]; //Routine d'ouverture if(OpenDialog1->Execute()) { FILE *fichier1 = fopen (Form2->OpenDialog1->FileName.c_str(), "rb") ; if (!fichier1){ ShowMessage ("Impossible d'ouvrir le fichier\n" +Form2->OpenDialog1->FileName); return ; } fread (ptr,T, T, fichier1); // là je me demande si il va me charger 6000 ligne et 6000 colonne dans la matrice ptr for (int j=0; j<T; j++) for (int i=0; i<T; i++) { Matrice[i][j]= ptr[i][j]; if (Matrice[i][j] > 255) Matrice[i][j]=255; //Seuillage à la valeur maximale if (Matrice[i][j] < 0) Matrice[i][j]=0; //Seuillage à la valeur minimale Form2->Image1->Canvas->Pixels[i][j]= //Affichage de l'image TColor (RGB(Matrice[i][j],Matrice[i][j],Matrice[i][j])); } }
alors correction please et merci d'avance pour votre aide
Partager