bonjour,je suis d�butant en builder c++ , je veux savoir comment faire la lecteur d'une image et l'affichage c-a-d (l'affichage de l'image original et l'image r�sultat) .merci
bonjour,je suis d�butant en builder c++ , je veux savoir comment faire la lecteur d'une image et l'affichage c-a-d (l'affichage de l'image original et l'image r�sultat) .merci
Image ? BMP ? JPEG ?
Composant TImage, TBitmap, TPicture, TCanvas
Voir l'exemple FishFactory fourni dans les D�mos du RAD Studio !
Bonne Lecture !
Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !![]()
Attention Troll M�chant !
"Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la m�diocrit� !
L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
merci,mon probl�me maintenant c'est la t�l�chargement des images .tif et .jpg
avec le code suivant je peux t�l�charg� que les images format bmp!
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 if (OpenPictureDialog1->Execute()) Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
t�l�chargement ???
tu veux dire chargement !
LoadFromFile g�re un syst�me de fichier windows (local ou r�seau), on ne peut pas parler de t�l�chargement comme avec des protocoles FTP ou HTTP !
Pour le TPicture, il g�re plusieurs formats nativement mais cela d�pend de la version de C++Builder
A partir de 2009, le TIFF doit �tre g�r�, ainsi que le JPEG
En C++Builder 6, tu peux utiliser le TJPEGImage, tu as plein d'exemple d'utilisation
Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !![]()
Attention Troll M�chant !
"Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la m�diocrit� !
L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
plut�t chargement merci bien
comment appliqu� cette programme sur une image sous builder c++.
je suis d�butant en builder et c'est premier fois que j'utilise builder en traitement d'image aide moi svp.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 /* otsu_th.c */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include "mypgm.h" void otsu_th( ) /* binarization by Otsu's method based on maximization of inter-class variance */ { int hist[GRAYLEVEL]; double prob[GRAYLEVEL], omega[GRAYLEVEL]; /* prob of graylevels */ double myu[GRAYLEVEL]; /* mean value for separation */ double max_sigma, sigma[GRAYLEVEL]; /* inter-class variance */ int i, x, y; /* Loop variable */ int threshold; /* threshold for binarization */ printf("Otsu's binarization process starts now.\n"); /* Histogram generation */ for (i = 0; i < GRAYLEVEL; i++) hist[i] = 0; for (y = 0; y < y_size1; y++) for (x = 0; x < x_size1; x++) { hist[image1[y][x]]++; } /* calculation of probability density */ for ( i = 0; i < GRAYLEVEL; i ++ ) { prob[i] = (double)hist[i] / (x_size1 * y_size1); } /* omega & myu generation */ omega[0] = prob[0]; myu[0] = 0.0; /* 0.0 times prob[0] equals zero */ for (i = 1; i < GRAYLEVEL; i++) { omega[i] = omega[i-1] + prob[i]; myu[i] = myu[i-1] + i*prob[i]; } /* sigma maximization sigma stands for inter-class variance and determines optimal threshold value */ threshold = 0; max_sigma = 0.0; for (i = 0; i < GRAYLEVEL-1; i++) { if (omega[i] != 0.0 && omega[i] != 1.0) sigma[i] = pow(myu[GRAYLEVEL-1]*omega[i] - myu[i], 2) / (omega[i]*(1.0 - omega[i])); else sigma[i] = 0.0; if (sigma[i] > max_sigma) { max_sigma = sigma[i]; threshold = i; } } printf("\nthreshold value = %d\n", threshold); /* binarization output into image2 */ x_size2 = x_size1; y_size2 = y_size1; for (y = 0; y < y_size2; y++) for (x = 0; x < x_size2; x++) if (image1[y][x] > threshold) image2[y][x] = MAX_BRIGHTNESS; else image2[y][x] = 0; } main( ) { load_image_data( ); /* input image1 */ otsu_th( ); /* Otsu's binarization method is applied */ save_image_data( ); /* output image2 */ return 0; }
je veux convertir l'image original au image binaire avec builder c++et bien sur l'affichage de r�sultat sur une fen�tre, et limage original dans une autre fen�tre .
D'accord,
et bien c'est facile de le faire sans pour autant passer par des trucs complexes...
pour binariser une image t'aurad besoin d'un seuil (threshold), tu parcour la matrice de ton image pixel par pixel, et tu teste: si la valeur rgb est supperieur � se threshold alors tu poses: valeur_pixel(i,j)=1, else valeur_pixel(i,j)=0.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 int Threshold=50; // exemple de seuil, a toi de voir pour cette valeur.... for(int i=0;i<Bitmap->Height ; i++) for(int j=0;j<Bitmap->Width;j++) {{ if(Image->Canvas->Pixels[i][j]>= Threshold)Image->Canvas->Pixels[i][j]=1; else Image->Canvas->Pixels[i][j]=0; }} //----fin binarisation //sinon pour l'affichage sur la 2° fenêtre c'est facile aussi, il suffit de de sauvegarder l'image binariser et la réouvrire dans la nouvelle fenetre ou de nommer un autre objet image dynamique...
oh c'est tout! je pensais que builder comme le c 100%
est ce que tu a un document sur la programmation de builder c++ dans le traitement d'image?svp aidez moi.
j'ai comme un projet de fin d'�tude identification par empreinte digitals avec builder c++ et je suis perdu.
T'auras pas besoin de Builder pour faire le traitement d'image mais plutot des librairies comme ImageMAgick ou Opencv. C'est plus facile.
et ce que t'as essay� l'exemple de binarisation?
Sinon concernant la reconnaissance d'empreinte, c'est le mod�l statistique qui se fait deri�re qui doit �tre pr�parer car l'�tape de binarisation doit �tre fait a priori, pour que le mod�l � HMM ou r�seaux de neuronnes re�oit l'image binari�e pour la traiter....
Par contre, je croyait les images des empreintes sont d�ja binaris�es? je me trompe?
oui j'ai essay� il y a des erreurs
je travail avec les algorithmes g�n�tique je ne travail pas avec les r�seau de neurone .
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 [C++ Warning] Unit1.cpp(36): W8004 'Threshold' is assigned a value that is never used [C++ Error] Unit1.cpp(32): E2451 Undefined symbol 'Image' [C++ Error] Unit1.cpp(29): E2451 Undefined symbol 'Bitmap'
l'image d'empreinte en niveau de gris.
Bien sur, je l'ai fait � titre illustratif;
Poses un objet TImage sur ta forme, et essayes se code la
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 TPicture * pict = new TPicture; Graphics::TBitmap *bmpPicture = new Graphics::TBitmap; bmpPicture->LoadFromFile(L"C:\\f.bmp"); pict->Bitmap = bmpPicture; Image1->Picture = pict; Image1->Width=pct->Bitmap->Width; Image1->Height=pct->Bitmap->Height; int Threshold=240*240*240; // exemple de seuil, a toi de voir pour cette valeur.... for(int i=0;i<Image1->Height; i++) for(int j=0;j<Image1->Width;j++) {{ if(Image1->Canvas->Pixels[i][j]>= Threshold)Image1->Canvas->Pixels[i][j]=255*255*255; else Image1->Canvas->Pixels[i][j]=0; }}
Remarque: c'est un petit exemple, � toi de voir concernant le threshold ou le type du canal utilis� si c'est RGB, sinon si c'est niveau de gris, le threshold doit �tre entre zero et 255....
Merci bien pour tes efforts,il y a erreur aussi!
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 [C++ Error] Unit1.cpp(35): E2451 Undefined symbol 'pct' [C++ Warning] Unit1.cpp(42): W8018 Assigning int to TColor [C++ Warning] Unit1.cpp(43): W8018 Assigning int to TColor
merci bien , il reste maintenant l'affichage de r�sultat , d�sol� j'ai pos� beaucoup des questions peut �tre b�tes , merci encore pour tes �ffort
ok merci beaucoup
@dz_robotix
comment utiliser la biblioth�que opencv et comment l'int�grer et builder ?
Partager