border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 27-09-2007, 14:24:30
Junior Member
Site Admin
 
Registrado: sep 2007
Posts: 2
luiscarloscn Valoración +2
Predeterminado comparar fotos

Hola que tal amigos del foro.

Quisiera saber como pudo hacer para comparar 2 fotos en vb y que el mismo me indique las diferencias ya se colocando un shape en la imagen o algo que indique la diferencias..

Gracias de antemano por su ayuda
Responder Con Cita
  #2 (permalink)  
Antiguo 27-09-2007, 14:39:55
Avatar de Alella
Moderador
 
Registrado: mar 2004
Ubicación: BARCELONA - ESPAÑA
Posts: 973
Alella Valoración +2
Predeterminado

Hola, que tal.

Prueba con esto:

Código:

Option Explicit

Private Declare Function GetBitmapBits Lib "gdi32" _
   (ByVal hBitmap As Long, ByVal dwCount As Long, _
   lpBits As Any) As Long

Private Declare Function SetBitmapBits Lib "gdi32" _
   (ByVal hBitmap As Long, ByVal dwCount As Long, _
   lpBits As Any) As Long
   
Private Declare Function GetObject Lib "gdi32" Alias _
   "GetObjectA" (ByVal hObject As Long, ByVal nCount _
   As Long, lpObject As Any) As Long

    
Private Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type



Private Function GetBitmapData(pic As PictureBox) As String

    Dim BitmapData As String
    Dim BitmapBytes As Long
    
    Dim BMP As BITMAP
    
    GetObject pic.Image.Handle, Len(BMP), BMP

    BitmapBytes = BMP.bmHeight * BMP.bmWidth * (BMP.bmBitsPixel \ 8)
    
    BitmapData = Space$(BitmapBytes)
    GetBitmapBits pic.Image.Handle, BitmapBytes, ByVal BitmapData
    
    GetBitmapData = BitmapData
End Function

Private Sub Command1_Click()

MsgBox GetBitmapData(Picture1) = GetBitmapData(Picture2)

End Sub

Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture2.AutoRedraw = True
Picture1.AutoSize = True
Picture2.AutoSize = True

End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.PSet (X, Y), RGB(255, 255, 255)
Picture1.Refresh
End Sub

Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture2.PSet (X, Y), RGB(255, 255, 255)
Picture2.Refresh
End Sub
Ya nos contarás.
__________________
Un saludo.

Alfredo
Barcelona-España
_________________
Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 27-09-2007, 17:41:51
Junior Member
Site Admin
 
Registrado: sep 2007
Posts: 2
luiscarloscn Valoración +2
Predeterminado

hola que tal allela, sabes probe el codigo y esta muy bien solo que no me marca las diferencias me podrias decir como es que pruebo con las 2 funciones que estan al final...


gracias
Responder Con Cita
  #4 (permalink)  
Antiguo 27-09-2007, 18:10:09
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.197
acalanto ha deshabilitado la reputación
Predeterminado

Lo que hace él código que te pasa Alella es comparar en bloque la trama de bytes que componen cada una de las dos imágenes, de ahi que el resultado dvuelto sea verdadero o falso. Si lo que quieres es analizar el lugar en el que se producen las diferencias, tendrás que recorrer la cadena que se genera y comparar uno a uno todos los bytes de cada imagen.

Lo que no sé es de que forma serás capaz de mostrar las diferencias encontradas; imagínate que las dos fotos son completamente diferentes !!
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #5 (permalink)  
Antiguo 27-09-2007, 19:33:38
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.266
J.M.Movilla Valoración +2
Predeterminado

Yo pienso que lo que pretendes te va a generar un gran dolor de cabeza. Porque en el caso de que ambas fotos sean prácticamente iguales con sólo el hecho de que a una le falle el primer bit... ya todos los miles o millones de bits te aparecerán como diferentes, puesto que irá comparando el bit 1 de la primera foto con el bit 1 de la segunda, que en realidad será igual al bit 2 de la primera, puesto que el 1 se perdió...; y el 2 de la primera con el 2 de la segunda que vemos que ha pasado a ser igual al 3 de la primera... O sea, que al final todo será diferente, aunque en realidad la única diferencia es que a la segunda foto le falta el primer bit gráfico...
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #6 (permalink)  
Antiguo 28-09-2007, 09:44:22
Gran Participación en el Foro
 
Registrado: oct 2003
Posts: 436
MiguelS Valoración +2
Predeterminado

Creo que vas a necesitar algo como esto
http://en.commonvisionblox.de/pages/...Fuzzy.Relation
Los algoritmos para comparar fotos , que funcionen bien aun cuando las 2 fotos estan en distinta posiciones son complicados.
Los mas simples estan basados en convolucion de matrices.
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
AIR - Visor de fotos maxonico Aplicaciones Ofrecidas o Solicitadas 0 25-06-2007 18:02:28
Fotos a la Base de Datos Bunbury Visual Basic.NET 2003 & 2005 1 13-06-2006 07:56:30
fotos en el reporte jhanluigui Crystal Reports 2 21-11-2005 04:08:08
manejo de fotos JESUS_RAMIREZ Visual Basic 6.00 2 17-09-2004 00:00:00
Fotos en una tabla de access zambito Visual Basic 6.00 2 17-09-2004 00:00:00


La franja horaria es GMT. Ahora son las 12:11:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right