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?
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
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 :xD
Tengo una idea que podría funcionar aunque lleva algo de matemática pero bueno los programadors somos matemáticos natos :xD
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
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)
Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)
Joder, Justo lo que necesitaba. Gracias seba123neo ;·)
De acá podes sacar como marcar los cambios entre imagen e imagen. Ademas de eso, el programa esta muy bueno. Espero te sirva.
http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx
Cita de: seba123neo en 21 Enero 2010, 01:39 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)
Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)
Cada vez me doy mas cuenta de lo groso que este framework.
Cita de: nico56 en 21 Enero 2010, 06:29 AM
Cita de: seba123neo en 21 Enero 2010, 01:39 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)
Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)
Cada vez me doy mas cuenta de lo groso que este framework.
por eso es .NET , sigla de "Nunca Entendes Todo" ;D
Cita de: seba123neo en 22 Enero 2010, 04:04 AM
Cita de: nico56 en 21 Enero 2010, 06:29 AM
Cita de: seba123neo en 21 Enero 2010, 01:39 AM
Image Comparison in C# (http://www.dotnetspider.com/resources/19811-Image-Compare-C.aspx)
Comparing Images using GDI+ (http://www.codeproject.com/KB/GDI-plus/comparingimages.aspx)
Cada vez me doy mas cuenta de lo groso que este framework.
por eso es .NET , sigla de "Nunca Entendes Todo" ;D
Jaja muy cierto, o nunca te vas a enterar de todas las clases que tiene.