2008-09-30 19 views
51

Quiero ser capaz de comparar una imagen tomada desde una cámara web con una imagen almacenada en mi computadora.¿Hay alguna biblioteca de reconocimiento de imágenes OK para .NET?

La biblioteca no necesita ser cien por ciento precisa, ya que no se usará en ninguna misión crítica (por ejemplo, investigación policial), solo quiero algo con lo que pueda trabajar.

He intentado un proyecto de demostración para Image Recognition from CodeProject, y solo funciona con imágenes pequeñas/no funciona en absoluto cuando comparo exactamente la misma imagen de 120x90 píxeles (esto no está clasificado como OK: P).

¿Ha habido algún éxito con el reconocimiento de imágenes anteriormente?

Si es así, ¿podría proporcionar un enlace a una biblioteca que podría usar en C# o VB.NET?

+0

Es definitivamente funciona con imágenes mucho más grandes que esto, debe haber algún otro problema, posiblemente el formato. –

Respuesta

68

Usted podría intentar esto: http://code.google.com/p/aforge/

Incluye un análisis de comparación que le dará una puntuación. También hay muchas otras excelentes funciones de imágenes de todos los tipos incluidos.

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

¡Suena genial! Esperemos que funcione como se espera ... Marcaré su respuesta como aceptada si lo hace. :) – RodgerB

+7

¡Funciona absolutamente fantástico! 100% similar para comparar su propia imagen, 91% similar para mí sentado en mi silla y yo inclinado a mi izquierda. Esto es todo lo que podría haber esperado, gracias a un billón :) – RodgerB

+4

Eso es genial, me alegro de poder vincularlo. Ojalá de alguna manera hubiera una forma de vengar al hombre que me vinculó primero. Era exactamente lo que necesitaba en uno de mis proyectos también. Gracias – mattlant

3

Lo hice simplemente. Simplemente descargue la biblioteca EyeOpen here. luego usarlo en su clase C# y escribe esto:

use eyeopen.imaging.processing 

Escribir

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

¿Por qué publica la misma respuesta [dos veces] (http://stackoverflow.com/a/12421689/569101)? – j0k

+0

comparación de imagen simple y fácil, me gusta. – Hiram

+0

@ j0k, supongo que porque la respuesta funciona para 2 preguntas, como lo demuestran los upvotes .... – MyDaftQuestions

Cuestiones relacionadas