leonardo14
Messages postés23Date d'inscriptionvendredi 28 novembre 2008StatutMembreDernière intervention24 mai 2009
-
16 mai 2009 à 01:08
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
17 mars 2010 à 09:38
Bonjour je suis a la recherche d'un code qui marche bien. Se code vas me premetre de comparer des image.
Exemple: Jai un ImageBox1 et ImageBox2. si l'image qui apparait dans mon Imagebox1 est identique au ImageBox2 alors
le programme vous affiche un message.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 18 mai 2009 à 12:24
Salut
Le problème, Robert33, c'est que ton code (en mettant effectivement un !à la place du), même s'il marche bien, est probablement lent (je dis probablement car je n'ai pas testé la méthode GetPixel() sans la méthode SetPixel()). Grâce au code non managé (unsafe), tu gagneras certainement en performances (enfin s'il est nécessaire que ton code soit rapide).
Si tu veux plus d'informations, je suis sûr qu'en faisant quelques recherches, tu trouveras rapidement via le moteur de recherche de CS, ou à la limite via Google.
Bonne chance
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 24 mai 2009 à 00:49
Bonsoir,
Krimog, il est certain que le code ne sera pas premier dans une course de vitesse, car la methode GetPixel "lock" le bitmat à chaque fois.
Donc à eviter si les images sont trop grandes ou s'il y a trop d'images.
mais pour de petites tailles c'est assez simple.
bahriprofinfo
Messages postés3Date d'inscriptionlundi 28 janvier 2008StatutMembreDernière intervention25 novembre 2009 25 nov. 2009 à 11:29
pour la comparaison de deux images, il ne faut pas utilisé les opérateur == ou !=: il faut calculer la distance entre ces deux images (la similarité entre ces deux images càd le degré de ressemblance entre celle ci). il faut extraire les signatures (Histogram par exemple) de chaqu'une de ces images, puis calculer la distence (EMd, euclidiennne) entre ces signatures ; sila distance est plus petit alors les deux images sont plus ressemblentes et vice versa
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 25 nov. 2009 à 13:46
Salut Bahriprofinfo
Ce post date de mai pour info ;)
De plus, il ne cherchait pas à savoir si deux images étaient similaires, mais si elles étaient identiques (c'est une petite nuance verbale et une énorme nuance au niveau de l'algorithme).
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 15 mars 2010 à 10:13
@Zanzan:
Ce post date de presque un an.
De plus, il a déjà été indiqué dans le post que la méthode GetPixel est lente. Cependant, comme j'en ai parlé, il est possible de passer par du code unsafe pour éviter cela. La bibliothèque OpenCV n'est absolument pas nécessaire pour ça, et je doute très fortement que ce soit plus rapide que du traitement unsafe.
Enfin, cette bibliothèque est à la base en C/C++/Python. Je crois qu'il existe cependant une version C#, mais non officielle. Toujours est-il que c'est plus compliqué que d'utiliser les méthodes directement disponibles en C#.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 16 mars 2010 à 18:19
bonsoir,
en effet ce post date un peu.
pour info on peut aussi utiliser la methode LockBits du bitmap en lecture seule elle permet d'aller tres vite.
mais je suis d'accord avec toi Krimog, un peu de code unsafe permet d'accelerer certain traitement.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 17 mars 2010 à 09:38
@Robert33
Il est vrai que LockBits n'oblige pas à utiliser du code unsafe (cependant, le code unsafe oblige à utiliser LockBits), mais je trouve ça tellement plus pratique que d'utiliser InteropServices.Marshal ;)
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -