Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Comparar imagenes BMP

Estas en el tema de Comparar imagenes BMP en el foro de C/C++ en Foros del Web. Hola a todos. Quisiera saber si alguien me podría dejar un código de una simple función que lo único que tiene que hacer es comparar ...
  #1 (permalink)  
Antiguo 20/06/2012, 19:18
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Comparar imagenes BMP

Hola a todos. Quisiera saber si alguien me podría dejar un código de una simple función que lo único que tiene que hacer es comparar dos archivos de tipo BMP y decir si son iguales o no. No pido que identifique en qué difieren ni nada, solo saber si son iguales o no. Hago este pedido porque me la pasé buscando esto pero todos los códigos que encontré tienen un problema: o no andan, o necesitan una clase en particular, o son para vc. Uso MinGW.

Estaría muy agradecido de el que me pueda ayudar...

!

P.D: En C++

Última edición por carbon; 20/06/2012 a las 19:27
  #2 (permalink)  
Antiguo 20/06/2012, 19:48
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Comparar imagenes BMP

Te parece simple eso?? Una idea que se me occure es leer byte a byte:

Código C++:
Ver original
  1. while (!feof(File1)) {
  2.       fread (&c1, 1 , 1 ,File1);
  3.       fread (&c2, 1 , 1 ,File2);
  4.       if (c1 != c2) printf("El archivo es distinto");
  5.       }
  #3 (permalink)  
Antiguo 21/06/2012, 16:29
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Comparar imagenes BMP

Gracias por la respuesta y el código! A continuación te muestro la función que he armado a ver si puedes decirme qué está mal, ya que aunque los archivos sean iguales, siempre dice que son diferentes:

Código C++:
Ver original
  1. void fcompare(void)
  2. {
  3.     FILE *File1, *File2;
  4.     char *buffer1, *buffer2;
  5.  
  6.     File1 = fopen ("C://img1.bmp" , "rb");
  7.     File2 = fopen ("C://img2.bmp" , "rb");
  8.  
  9.     while (!feof(File1)) {
  10.       fread (&buffer1, 1 , 1 ,File1);
  11.       fread (&buffer2, 1 , 1 ,File2);
  12.       if (buffer1 != buffer2)
  13.       {
  14.         printf("Distintos.\n");
  15.         break;
  16.       }
  17.     }
  18.  
  19.     printf("Fin.\n");
  20. }

Gracias nuevamente,
  #4 (permalink)  
Antiguo 22/06/2012, 01:55
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Comparar imagenes BMP

buffer1 y buffer2 los has definido como punteros a caracter, defínelos como caracter, es decir:

char buffer1, buffer2;
  #5 (permalink)  
Antiguo 22/06/2012, 08:47
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años, 6 meses
Puntos: 28
Respuesta: Comparar imagenes BMP

haz lo que dice el penultimo comentario trabaja leyendo char a char, aqui tienes el code..

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <vector>
using namespace std;

void fcompare(void)
{
bool ok = false;
FILE *File1, *File2;
char buffer1, buffer2;

File1 = fopen ("C://img1.bmp" , "rb");
File2 = fopen ("C://img2.bmp" , "rb");

while (!feof(File1))
{
fread (&buffer1, 1 , 1 ,File1);
fread (&buffer2, 1 , 1 ,File2);
if (buffer1 != buffer2)
{
printf("Distintos.\n");
ok = true;
break;
}
}
if (ok==false) printf("Iguales.\n");
printf("Fin.\n");
}
int main ()
{
fcompare();

system("pause");
}

s2 crono
  #6 (permalink)  
Antiguo 22/06/2012, 11:33
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Comparar imagenes BMP

Gracias a todos! Me ha servido!

Etiquetas: bmp, imagenes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:45.