2008-09-30 3 views
51

Ich möchte ein Bild von einer Webcam mit einem Bild auf meinem Computer gespeichert vergleichen können.Gibt es OK-Bilderkennungsbibliotheken für .NET?

Die Bibliothek muss nicht hundertprozentig genau sein, da sie nicht für irgendeinen unternehmenskritischen Einsatz verwendet wird (z. B. polizeiliche Ermittlungen), ich möchte einfach etwas, mit dem ich arbeiten kann.

Ich habe versucht, ein Demonstrationsprojekt für Image Recognition from CodeProject, und es funktioniert nur mit kleinen Bildern/funktioniert überhaupt nicht, wenn ich ein exaktes gleiches Bild 120x90 Pixel (das ist nicht als OK: P).

Hat es schon einmal einen Erfolg bei der Bilderkennung gegeben?

Wenn ja, könnten Sie einen Link zu einer Bibliothek bereitstellen, die ich in C# oder VB.NET verwenden könnte?

+0

es auf jeden Fall mit vielen größeren Bildern als dies funktioniert, muss möglicherweise das Format ein anderes Problem sein. –

Antwort

68

Sie konnten dieses versuchen: http://code.google.com/p/aforge/

Es enthält eine Vergleichsanalyse, die Ihnen eine Punktzahl geben. Es gibt viele andere großartige Imaging-Funktionen aller Typen.

// 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

Klingt gut! Hoffen wir, dass es wie erwartet funktioniert ... Ich werde Ihre Antwort als akzeptiert markieren, wenn sie es tut. :) – RodgerB

+7

Es funktioniert absolut fantastisch! 100% ähnlich für den Vergleich seines eigenen Bildes, 91% ähnlich für mich aufrecht auf meinem Stuhl sitzend und mich nach links geneigt. Das ist alles, was ich mir erhofft hätte, danke eine Milliarde :) – RodgerB

+4

Das ist genial, ich bin froh, dass ich dich damit verbinden konnte. Ich wünschte, irgendwie gäbe es einen Weg, den Kerl zurückzuzahlen, der mich zuerst verbunden hat. Es war genau das, was ich auch in einem meiner Projekte brauchte. Danke – mattlant

3

Ich habe es einfach gemacht. Laden Sie einfach die EyeOpen-Bibliothek here herunter. es dann in Ihrer C# Klasse verwenden und schreiben dies:

use eyeopen.imaging.processing 

schreibt

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

Warum postest du die gleiche Antwort [zweimal] (http://stackoverflow.com/a/12421689/569101)? – j0k

+0

Einfacher und einfacher Bildvergleich, ich mag es. – Hiram

+0

@ j0k, ich denke, weil die Antwort für 2 Fragen funktioniert, wie von den upvotes demonstriert .... – MyDaftQuestions