Título: comparar Imagenes Publicado por: yalosabes en 21 Marzo 2006, 19:40 pm Holas a todos, tenia una duda :huh: : se puede comparar 2 imagenes ? porke pensaba en hacer un programa de vigilancia con mi cam , o kaso contrario alguna forma que mi cam detecte movimientos. Gracias ;D
Título: Re: comparar Imagenes Publicado por: Hendrix en 21 Marzo 2006, 19:48 pm Si que se puede, te paso el kode:
Código: Dim a As String Espero ek te sirva.... Salu2 Hendrix Título: Re: comparar Imagenes Publicado por: yalosabes en 21 Marzo 2006, 19:54 pm no entiendo ?? me podrias poner los comentarios pls solo entiendo lo de las variables pls, porfis no comprendo mucho, gracias
Título: Re: comparar Imagenes Publicado por: Hendrix en 21 Marzo 2006, 19:56 pm xD xD y tu kieres hacer un Centinela para la cam??? xD xD
Weno, te lo expliko, lo que hace este programa es abrir las dos imagenes que kieres mirar si son iguales, las abre en binario. Luego las kompara, si son iguales te dice: son iguales, y si no lo son te dice: no son iguales...xD Lo entienes???? es muy facil.... Salu2 Hendrix Título: Re: comparar Imagenes Publicado por: NYlOn en 21 Marzo 2006, 20:05 pm Eso es con archivos guardados en la pc, si queres trabajar con imagenes en tiempo de ejecucion podes usar la api GetPixel
Código: Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Eso te daria el color del pixel que hay en el Picutre1 en las coordenadas 10, 10. Te podes fijar en dos imagenes diferentes las mismas coordenadas, asi si son diferentes, el color va a ser distinto. Saludos.- Título: Re: comparar Imagenes Publicado por: yalosabes en 22 Marzo 2006, 00:46 am gracias aver primero probare el primer kodigo, es que no comprendia onde iba la seguna imagen seria : "Rutaimagen2= "C:\image2.jpg"" , solo me faltaba ver eso pa entenderlo , gracias nos vimos
Título: Re: comparar Imagenes Publicado por: Gorky en 22 Marzo 2006, 14:21 pm Es cierto que el codigo dado por _Hendrix_ sirve para comparar dos imagenes. Pero eso en la vida real no te va a servir ya que cuando tu recibes una imagen con la cam, y aunque no haya habido movimiento, la siguiente no es exactamente identica. Siempre hay un minimo cambio.
Título: Re: comparar Imagenes Publicado por: Kizar en 22 Marzo 2006, 21:30 pm Lo que tienes que hacer es comprarar cada pixel como a dicho NYlOn, usando 2 For y dar un margen de error en el color de un 20% porke siempre los colores de la cam cambian un poko.
Salu2 Título: Re: comparar Imagenes Publicado por: LeandroA en 23 Marzo 2006, 00:28 am Hola yo estoy haciendo exactamente lo mismo osea una alrma con una webcam y me funciona muy bien, no te paso el proyecto porque no lo termino aun y es un verdadero quilombo de codigo pero te pongo parte del codigo donde comparo las imagenes
de todas formas hice algunas automatizaciones ya que la webcam va cambiando su gama a desde que se inicia entonces tienes que hacer que la comparacion tenga ciertos rangos de diferencia (es algo dificil de explicar) Sub Calcular() On Error Resume Next Dim Contador As Long, x As Long, y As Long For x = 0 To Picture1.Width Step Picture1.Width / 100 For y = 0 To Picture1.Height Step Picture1.Height / 100 If GetPixel(Picture1.hdc, x, y) < GetPixel(Picture2.hdc, x, y) - 1500000 Or GetPixel(Picture1.hdc, x, y) > GetPixel(Picture2.hdc, x, y) + 1500000 Then Contador = Contador + 1 End If Next Next ProgressBar1.Value = ProgressBar1.Min If Contador > ProgressBar1.Max Then Contador = ProgressBar1.Max ProgressBar1.Value = Contador If Slider1.Value <= ProgressBar1.Value + 10 Then Slider1.Value = Slider1.Value + 5 If Contador >= Slider1.Value Then Slider1.Value = Slider1.Value + 10 sndplaysound "C:\Archivos de programa\Windows NT\Pinball\SOUND36.WAV", SND_NODEFAULT + SND_ASYNC 'App.Path & Image1(3) = Image1(2) '-------***********------- If Form2.ChkVideo Then Grabar 'comienza a grabar el video '-------***********------- Else Image1(3) = Image1(1) If Slider1.Value > ProgressBar1.Value + 100 Then Slider1.Value = Slider1.Value - 10 End If End Sub Título: Re: comparar Imagenes Publicado por: yalosabes en 23 Marzo 2006, 03:37 am sorry x mi ignorancia , pero como haces para grabar lo de tu cam??, es que soy inexperto ( pero con muxas ganas de aprender). Gracias spero su respuesta
Título: Re: comparar Imagenes Publicado por: LeandroA en 23 Marzo 2006, 04:41 am hola te paso un ejemplo
http://ar.geocities.com/leandroascierto/webcam.zip (http://ar.geocities.com/leandroascierto/webcam.zip) fijate que de esta forma no usa timer ni ocupa el portapapeles pero es importante que la aplicacion este siempre visible , tambien tiene una contra de esta forma no vas a poder comparar las imagenes porque lo que hace es enviarle un hwnd de una ventana para que el dispositivo de captura se reprodusca, yo lo que hice para la alarma es enviarle un SendMessage para que guarde constantemente las capturas en un archivo(.bmp) y luego desde alli las voy cargando a un picture y las voy comparando cuadro por cuadro te paso la rutina para guardar la imagen ya que en el ejemplo del enlace no lo tiene para esto si uso un timer, pero cuando empieza a grabar el video, el timer se detiene Dim nombre As String '------le paso el nombre para guardar una foto nombre = StrConv(App.Path & "\TMPfoto.bmp", vbFromUnicode) SendMessage mCapHwnd, WM_CAP_FILE_SAVEDIB, 0, StrPtr(nombre) Picture1.PaintPicture LoadPicture(App.Path & "\TMPfoto.bmp"), 0, 0, Picture1.Width, Picture1.Height Picture1.Picture = Picture1.Image Bueno no es por deslentarte pero viene complicado el asunto yo hace rato que vengo con este proyecto y aun lo puedo terminar Saludos |