Compare 2 fichier bmp => detection de pixel

cs_mavric Messages postés 13 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 28 septembre 2003 - 1 févr. 2002 à 11:40
voodoudic Messages postés 2 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 9 mars 2003 - 9 mars 2003 à 17:43
bonjour je cherche comment comparer 2 bmp pour faire de la
detection de pixel ,mais je n'y arrive pas !!!
Si vous pouviez me donner des infos ou un source sur
lequel je peux me base ca m'avancerais beaucoup .Merci d'avance

5 réponses

Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006
1 févr. 2002 à 22:02
tu veux faire quoi ?
que ton programme compare 2 fichier et t'indique les positions des pixels qui different ?
tu veux utiliser les gdi ou le faire directement en lisant les fichiers ?
soit plus precis, indique ce que tu veut qu'indique le resultat de la comparaison des 2 bmp
0
cs_mavric Messages postés 13 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 28 septembre 2003
3 févr. 2002 à 09:15
tu veux faire quoi ?
que ton programme compare 2 fichier et t'indique les positions des pixels qui different ?

Oui ca m'aiderai bien ,ca ne serais qu'un debut mais ca serais tres bien

tu veux utiliser les gdi ou le faire directement en lisant les fichiers ?

je veux lire directement les fichiers ,c pour un prog de surveillance video

soit plus precis, indique ce que tu veut qu'indique le resultat de la comparaison des 2 bmp

en bref si le prog pouvais m'indique le nombre de pixel different et leur position ca serais le top

Merci d'avance
Mavric
0
Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006
3 févr. 2002 à 23:10
bon je fait le prog cet nuit et je met ce que j'ai fait ici, demain soir
0
Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006
5 févr. 2002 à 23:07
bon c moche mis j'ai pas le temp de faire mieux en ce moment desolé !

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>

struct RVB{
unsigned char Rouge;
unsigned char Vert;
unsigned char Bleu;
};

struct Position{
unsigned x;
unsigned y;
};

bool ComparePixel(RVB rvb1,RVB rvb2);
bool CompareImg(Position *Pos,int &TaillePos,int largeur,int hauteur, unsigned char *img1, unsigned char *img2);
bool PrendreTaille(int &largeur,int &hauteur,unsigned char *img);
bool PrendrePixel(int x,int y,int largeur,int hauteur,RVB &Couleur,unsigned char *img);
int TailleLigne(int largeur);

void main(){
FILE *Fichier;
unsigned char *Contenu,*Contenu2;
int Taille,largeur,hauteur;
RVB Couleur;
Position *Pos;
int TaillePos;
if((Fichier fopen("test.bmp","rb")) NULL) return;
fseek(Fichier,0,SEEK_END);
Taille = ftell(Fichier);
fseek(Fichier,0,SEEK_SET);
Contenu = (unsigned char*) malloc(Taille);
fread(Contenu,1,Taille,Fichier);
fclose(Fichier);
if((Fichier fopen("test2.bmp","rb")) NULL){
free(Contenu);
return;
}
fseek(Fichier,0,SEEK_END);
Taille = ftell(Fichier);
fseek(Fichier,0,SEEK_SET);
Contenu2 = (unsigned char*) malloc(Taille);
fread(Contenu2,1,Taille,Fichier);
fclose(Fichier);
Pos = (Position *) malloc(sizeof(Position)*Taille);

if(memcmp(Contenu,Contenu2,0x36)!=0){
printf("Entete de fichier different comparaison impossible\n");
free(Pos);
free(Contenu);
free(Contenu2);
return;
}

PrendreTaille(largeur,hauteur,Contenu);

if(!CompareImg(Pos,TaillePos,largeur,hauteur,Contenu,Contenu2)){
printf("Probleme ...\n");
free(Pos);
free(Contenu);
free(Contenu2);
return;
}
if(TaillePos == 0){
printf("Image Identique\n");
}else{
printf("Image Differentes\n");
}

free(Pos);
free(Contenu);
free(Contenu2);
}

bool CompareImg(Position *Pos,int &TaillePos,int largeur,int hauteur, unsigned char *img1, unsigned char *img2){
TaillePos = 0;
int x,y;
RVB rvb1,rvb2;

for(y=0;y<hauteur;y++){
for(x=0;x<hauteur;x++){
if(!PrendrePixel(x,y,largeur,hauteur,rvb1,img1)) return false;
if(!PrendrePixel(x,y,largeur,hauteur,rvb2,img2)) return false;
if(!ComparePixel(rvb1,rvb2)){
Pos[TaillePos].x = x;
Pos[TaillePos].y = y;
TaillePos++;
}
}
}
return true;
}

bool ComparePixel(RVB rvb1,RVB rvb2){
if(rvb1.Rouge != rvb2.Rouge) return false;
if(rvb1.Vert != rvb2.Vert) return false;
if(rvb1.Bleu != rvb2.Bleu) return false;
return true;
}

bool PrendreTaille(int &largeur,int &hauteur,unsigned char *img){
memcpy(&largeur,img+0x12,4);
memcpy(&hauteur,img+0x16,4);
return true;
}

bool PrendrePixel(int x,int y,int largeur,int hauteur,RVB &Couleur,unsigned char *img){
int tmp;
if((x<0)||(y<0)||(x>largeur)||(y>hauteur)) return false;
tmp = ((hauteur-1)-y)*TailleLigne(largeur);
tmp += 3*x;
Couleur.Bleu = img[tmp+0x36];
Couleur.Vert = img[tmp+0x37];
Couleur.Rouge = img[tmp+0x38];
return true;
}

int TailleLigne(int largeur){
int tmp;
tmp = largeur*3;
if((tmp%2)==1) tmp++;
return tmp;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
voodoudic Messages postés 2 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 9 mars 2003
9 mars 2003 à 17:43
bonjour

dis moi le source que tu recherchais devait calculer le nombre de pixel utilisé??
qu'il renvoyait le nombre de pixel utilisé??

j'ai un projet c jour ci et je dois calculer le nombre de pixel
utilisé
en comparant deux images
si t'as des sources aides moi merci

mon adresse est voodoudic@caramail.com
voodoudic@hotmail.com
0
Rejoignez-nous