J'utilise une FileListBox. Ca tout est normal.
Mais j'utilise un compteur qui pointe sur les fichiers dans le dossier ouvert dans cette FileListBox, qui sont dans ce cas, des images tiff., Pour les ouvrir, je dois utiliser la librairie GraphicEx.
Code code de l'ouverture seloàn l'extension : 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 //Extraction de l'extension du fichier image ouvert FileExt1 = ExtractFileExt(FileName1); //Traitement des images JPEG if ((FileExt1 == ".jpeg")||(FileExt1 == ".jpg")||(FileExt1 == ".JPEG")||(FileExt1 == ".JPG")) { TxtExt->Caption = "*.jpeg"; Graphics::TBitmap *bmp = new Graphics::TBitmap(); TJPEGImage *jpg = new TJPEGImage(); jpg->LoadFromFile(FileName1); bmp->Assign(jpg); //Affichage a l'écran de l'image ouverte Image1->Picture->Assign(bmp); delete bmp; delete jpg; } //Traitement des images TIFF else if ((FileExt1 == ".tiff")||(FileExt1 == ".tif")||(FileExt1 == ".TIFF")||(FileExt1 == ".TIF")) { TxtExt->Caption = "*.tiff"; Graphics::TBitmap * bmp = new Graphics::TBitmap(); Graphicex::TTIFFGraphic * tiff = new Graphicex::TTIFFGraphic(); tiff->LoadFromFile(FileName1); bmp->Assign(tiff); //Affichage a l'écran de l'image ouverte Image1->Picture->Assign(bmp); delete bmp; delete tiff; } //Traitement des images Bitmap else if ((FileExt1 == ".bmp")||(FileExt1 == ".BMP")) { TxtExt->Caption = "*.bmp"; //Affichage a l'écran de l'image ouverte Image1->Picture->LoadFromFile(FileName1); }
Apres, je fait un traitement de l'image, mais dans le cas d'une image en tiff, le traitement ne se déroule pas comme je le voudrais (alors que dans un autre programme, j'ai le même code, et qui fonctionne)
ce code devrai permettre d'en faire sortir l'intensitée de chaque pixelde 0 a 765 et mise en pourcentage de 0 a 100 ensuite
Code code de traitement : 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 //Analyse image for (int y = 0; y < HeightImage1; y++) { ProgressBar1->Position++; for (int x = 0; x < WidthImage1; x++) { //Mise en mémoire des données de l'image Main->intensite->image1[x][y] = Image1->Canvas->Pixels[x][y]; //Conversion des données en hexadecimal AnsiString ValCouleur1 = IntToHex(Main->intensite->image1[x][y],6); //Decomposition par couleur AnsiString ValBleu1 = ValCouleur1.SubString(1,2); AnsiString ValVert1 = ValCouleur1.SubString(3,2); AnsiString ValRouge1 = ValCouleur1.SubString(5,2); //Ajout des caractères "0x" devant le chiffre hexadecimal AnsiString HexBleu1 = "0x" + ValBleu1; AnsiString HexVert1 = "0x" + ValVert1; AnsiString HexRouge1 = "0x" + ValRouge1; //Conversion en decimal int DecBleu1 = StrToInt(HexBleu1); int DecVert1 = StrToInt(HexVert1); int DecRouge1 = StrToInt(HexRouge1); //Valeur de l'intensité finale int TotalRVB1 = DecBleu1 + DecVert1 + DecRouge1; //Mise en mémoire de la valeur trouvée Main->intensite->image1[x][y] = TotalRVB1; //Recherche des valeurs extrèmes if (max1-Main->intensite->image1[x][y]<=0) { max1=Main->intensite->image1[x][y]; } if (min1-Main->intensite->image1[x][y]>=0) { min1=Main->intensite->image1[x][y]; } } } TxtInten->Caption = IntToStr(min1) + "/" + IntToStr(max1); Analyse->Refresh(); Analyse->Caption = "Traitement du fichier" + IntToStr(NumImage + 1) + "/" + IntToStr(Ajout->FileListBox1->Count); for (int y = 0; y < HeightImage1; y++) { ProgressBar2->Position+=1; for (int x = 0; x < WidthImage1; x++) { Main->pourcentage->image1[x][y] = (100*(Main->intensite->image1[x][y] - min1)/(max1 - min1)); Image1->Canvas->Pixels[x][y] = CodeInt[(int)(Main->pourcentage->image1[x][y] * 1021 / 100)]; Main->pourcentage->image1[x][y] = NULL; Main->intensite->image1[x][y] = NULL; } }
Partager