Autor
|
Tema: [VB.NET] Comparar Imagenes (Leído 17,533 veces)
|
Shell Root
|
Que tal, ando con una duda al crear una aplicacion, que lo unico que hace es comparar imagenes. Basicamente hace lo siguiente:
En 2 PictureBox tener la posibilidad de poner 2 Imagenes, al darle click en un Button, diga, Si son Iguales o no, y si se puede que diga por cuanto % es igual a la otra imagen.
Alguna pista de como crealo?
|
|
« Última modificación: 20 Enero 2010, 21:41 pm por Shell Root »
|
En línea
|
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
No se exactamente, pero y si comparas bytes por posicion del puntero seek? vas recorriendo offset por offset comprovando unas y otras y luego haces una simple regla de tres para ver cuanto coincide con cuanto.
Es una idea, quizas sea descabellado, quizás no.
Saludos
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Naa...bytes por bytes??.. no creo... yo haria que la imagen mas grande, se redimensione a la mas chica, y de ahi recien comparar (OJO, habria que poner algun filtro "suavizado" como para no borrar pixeles o etc) y despues comparas PD: Tu post se llama "comprar imagenes", no " comparar imagenes" ;-D
|
|
|
En línea
|
|
|
|
Keyen Night
Desconectado
Mensajes: 496
Nothing
|
Tengo una idea que podría funcionar aunque lleva algo de matemática pero bueno los programadors somos matemáticos natos Recorre todos los pixel de cada imagen comparando su valor hex, por cada pixel diferente sumaras +1 si es igual no sumaras nada en una variable A que usaras como buffer en una variable B sumaras +1 cada vez que compares un pixel con otro si al final A es igual a cero entonces la igual es igual si A es diferente que cero entonces es diferente para calcular el porcentaje entonces debes dividir A entre B y multiplicarlo por 100, mira el ejemplo: Public Class Form1 Public Function GetPixels(ByVal I As Bitmap) As List(Of Integer) GetPixels = New List(Of Integer) Dim X As Integer = 0, Y As Integer = 0 While X <> I.Width AndAlso Y <> I.Height GetPixels.Add(I.GetPixel(X, Y).ToArgb) X += 1 Y += 1 End While End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim I1 As New Bitmap("C:\1.jpg") Dim I2 As New Bitmap("C:\2.jpg") Dim A As Long = 0 Dim B As Long = 0 For Each C As Integer In GetPixels(I1) For Each D As Integer In GetPixels(I2) If C <> D Then A += 1 End If B += 1 Next Next MsgBox("Diferentes: " & A & _ vbNewLine & "Análizados: " & B _ & vbNewLine & "Porcentaje de Diferencia: " & Math.Round(A / B * 100, 2) & "%") End Sub End Class
|
|
« Última modificación: 21 Enero 2010, 01:54 am por Keyen Night »
|
En línea
|
La Fé Mueve Montañas... ...De Dinero
La programación es más que un trabajo es más que un hobby es una pasión...
|
|
|
|
Shell Root
|
Image Comparison in C#Joder, Justo lo que necesitaba. Gracias seba123neo ;·)
|
|
|
En línea
|
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
|
|
|
|
nico56
Desconectado
Mensajes: 246
|
Cada vez me doy mas cuenta de lo groso que este framework.
|
|
|
En línea
|
|
|
|
seba123neo
|
Cada vez me doy mas cuenta de lo groso que este framework. por eso es .NET , sigla de "Nunca Entendes Todo"
|
|
|
En línea
|
|
|
|
nico56
Desconectado
Mensajes: 246
|
Cada vez me doy mas cuenta de lo groso que este framework. por eso es .NET , sigla de "Nunca Entendes Todo" Jaja muy cierto, o nunca te vas a enterar de todas las clases que tiene.
|
|
|
En línea
|
|
|
|
|
|