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; }
« Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»
« No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_
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...
« Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»
« No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_
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?
« Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»
« No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_
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....
« Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»
« No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_
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
« Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»
« No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_
ok merci beaucoup
@dz_robotix
comment utiliser la bibliothèque opencv et comment l'intégrer et builder ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager