2008-09-30 2 views
51

Je souhaite pouvoir comparer une image prise d'une webcam à une image stockée sur mon ordinateur.Existe-t-il des bibliothèques de reconnaissance d'image OK pour .NET?

La bibliothèque n'a pas besoin d'être précise à cent pour cent car elle ne sera pas utilisée dans quelque chose de critique (par exemple une enquête policière), je veux juste quelque chose d'OK je peux travailler avec.

J'ai essayé un projet de démonstration pour Image Recognition from CodeProject, et cela fonctionne uniquement avec de petites images/ne fonctionne pas du tout quand je compare exactement une même image 120x90 pixels (ce n'est pas classé comme OK: P).

Y a-t-il eu un succès avec la reconnaissance d'image auparavant?

Si oui, seriez-vous en mesure de fournir un lien vers une bibliothèque que je pourrais utiliser dans C# ou VB.NET?

+0

Il fonctionne certainement avec des images beaucoup plus grandes que cela, doit être un autre problème peut-être le format. –

Répondre

68

Vous pouvez essayer ceci: http://code.google.com/p/aforge/

Il comprend une analyse de comparaison qui vous donnera un score. Il existe également de nombreuses autres fonctions d'imagerie de tous types.

// The class also can be used to get similarity level between two image of the same size, which can be useful to get information about how different/similar are images: 
// Create template matching algorithm's instance 

// Use zero similarity to make sure algorithm will provide anything 
ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0); 

// Compare two images 
TemplateMatch[] matchings = tm.ProcessImage(image1, image2); 

// Check similarity level 
if (matchings[0].Similarity > 0.95) 
{ 
    // Do something with quite similar images 
} 
+0

Ça a l'air génial! Espérons que cela fonctionne comme prévu ... Je vais marquer votre réponse comme acceptée si c'est le cas. :) – RodgerB

+7

Cela fonctionne absolument fantastique! 100% similaire pour comparer sa propre image, 91% similaire pour moi assis sur ma chaise et moi penché sur ma gauche. C'est tout ce que j'aurais pu espérer, merci un milliard :) – RodgerB

+4

C'est génial, je suis heureux que je pourrais vous lier à elle. Je souhaite qu'il y ait un moyen de rembourser le gars qui m'a lié en premier. C'était exactement ce dont j'avais besoin dans l'un de mes projets. Merci – mattlant

3

Je l'ai fait simplement. Il suffit de télécharger la bibliothèque EyeOpen here. Ensuite, utilisez dans votre classe C# et écrire ceci:

use eyeopen.imaging.processing 

Ecrire

ComparableImage cc; 

ComparableImage pc; 

int sim; 

void compare(object sender, EventArgs e){ 

    pc = new ComparableImage(new FileInfo(files)); 

    cc = new ComparableImage(new FileInfo(file)); 

    pc.CalculateSimilarity(cc); 

    sim = pc.CalculateSimilarity(cc); 

    int sim2 = sim*100 

    Messagebox.show(sim2 + "% similar"); 
} 
+3

Pourquoi publiez-vous la même réponse [deux fois] (http://stackoverflow.com/a/12421689/569101)? – j0k

+0

Comparaison d'images simple et facile, je l'aime. – Hiram

+0

@ j0k, je suppose que parce que la réponse fonctionne pour 2 questions, comme le montrent les upvotes .... – MyDaftQuestions

Questions connexes