Comparar dos JPG
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Comparar dos JPG
Hola a todos,
se os ocurre alguna manera rapida para comparar dos graficos(JPG,BMP, da igual), y detectar diferencias de un a otro.
se os ocurre alguna manera rapida para comparar dos graficos(JPG,BMP, da igual), y detectar diferencias de un a otro.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Hola Antonio,
los graficos son con el mismo formato, lo del CRC lo habia estado pensando como una posibilidad, pero quizas sea mas interesante el comparar pixel a pixel, pues así podria tener un porcentaje de smilitud y no solo igual o diferente.
Estoy algo perdido con el tema, como podria hacer una lectura pixel a pixel, comparando el color.
los graficos son con el mismo formato, lo del CRC lo habia estado pensando como una posibilidad, pero quizas sea mas interesante el comparar pixel a pixel, pues así podria tener un porcentaje de smilitud y no solo igual o diferente.
Estoy algo perdido con el tema, como podria hacer una lectura pixel a pixel, comparando el color.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Biel,
Lo suyo sería pasar este código a C para que vaya más rápido
Code: Select all
local hBmp1 := ReadBitmap( 0, cBmpFile1 )
local hBmp2 := ReadBitmap( 0, cBmpFile2 )
local hDC := CreateDC( "DISPLAY",0,0,0 )
local hDCMem1 := CreateCompatibleDC( hDC )
local hDCMem2 := CreateCompatibleDC( hDC )
local hOldBmp1 := SelectObject( hDCMem1, hBmp1 )
local hOldBmp2 := SelectObject( hDCMem2, hBmp2 )
local nWBmp1 := nBmpWidth( hBmp1 )
local nHBmp1 := nBmpHeight( hBmp1 )
local nWBmp2 := nBmpWidth( hBmp2 )
local nHBmp2 := nBmpHeight( hBmp2 )
DeleteDC( hDC )
// Aqui comparas los pixeles
for n = 1 to nHBmp1
for m = 1 to nHBmp1
if GetPixel( hDCMem1, n, m ) != GetPixel( hDCMem2, n, m )
MsgInfo( "son distintos" )
endif
next
next
SelectObject( hDCMem1, hOldBmp1 )
DeleteDC( hDCMem1 )
SelectObject( hDCMem2, hOldBmp2 )
DeleteDC( hDCMem2 )
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
-
- Posts: 161
- Joined: Tue Oct 18, 2005 10:01 am
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Gracias Antonio, con un pequeño retoque ya tengo la función haciendo justo lo que queria.
La utilizo con una camara IP, y lo que hago es detecar movimiento en la camara para disparar el sistema de grabación.
Le he añadido dos parametros, precision (pixels a evaluar), y similitud (para detectar diferencias entre colores). La funcion retorna el porcentaje de diferencia entre las dos imagenes.
Gracias por la ayuda.
La utilizo con una camara IP, y lo que hago es detecar movimiento en la camara para disparar el sistema de grabación.
Le he añadido dos parametros, precision (pixels a evaluar), y similitud (para detectar diferencias entre colores). La funcion retorna el porcentaje de diferencia entre las dos imagenes.
Gracias por la ayuda.
Last edited by Biel EA6DD on Wed May 23, 2007 4:48 pm, edited 1 time in total.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Hola Willi
pues de la misma manera que se activa. Cada x _ una imagen, la comparo con la anterior, y me devuelve un porcentaje de cambio. Si la grabacion esta activa, y el porcentaje de moviento es inferior al humbral que tengo definido para activar la grabación, se detiene la grabacion.
pues de la misma manera que se activa. Cada x _ una imagen, la comparo con la anterior, y me devuelve un porcentaje de cambio. Si la grabacion esta activa, y el porcentaje de moviento es inferior al humbral que tengo definido para activar la grabación, se detiene la grabacion.
Last edited by Biel EA6DD on Wed May 23, 2007 4:38 pm, edited 1 time in total.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: