begin process at 2012 05 28 18:41:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Comparateur d'image


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comparateur d'image

samedi 6 mai 2006 à 11:13:45 | Comparateur d'image

jopiou

Bonjour voilà j'ai un petit probleme (enfin petit n'est pas le mot je penses...)
Je dois creer un comparateur d'image pour pouvoir differentier deux images de types bmp et selon une marge d'erreur dire s'il y a une comparaison ou pas.

Je vais vous montrer mon morceau de code qui bien sur ne fonctionne pas...

CFile fichier,fichier2;
char *bufimg,*bufimg2;
int i=0,interror=0,j=0;
if(!fichier.Open("C:\\1.BMP",fichier.modeRead,0))MessageBox("souci",0,MB_OK);
else
{
i=fichier.GetLength();
SetDlgItemInt(IDC_EDIT2,i,1);//affiche dans une edit box
bufimg= new char[fichier.GetLength()];
MessageBox("ok",0,MB_OK);
fichier.Read(bufimg,sizeof(bufimg));
MessageBox("reussissage :p",0,MB_OK);
}

if(!fichier2.Open("C:\\2.BMP",fichier.modeRead,0))MessageBox("souci2",0,MB_OK);
else
{
bufimg2= new char[fichier2.GetLength()];
MessageBox("ok",0,MB_OK);
fichier2.Read(bufimg2,sizeof(bufimg2));

MessageBox("reussissage :p",0,MB_OK);

}


while(i>0)
{
interror+=abs(bufimg[i])-abs(bufimg2[i]);
  
i--;
}
if(interror>= 100) MessageBox("erreur",0,MB_OK);
else MessageBox("aucune erreur image",0,MB_OK);

SetDlgItemInt(IDC_EDIT1,interror,1);// affiche dans une editbox


delete[] bufimg;
delete[] bufimg2;
fichier.Close();
fichier2.Close();

Je sais je sais le code est moche mais c'est mon "brouillon" :)

Bon sinon voila comment je fais, je met les deux image BMP dans des buffer que je compares bit a bit, enfin je les soustrait pour recuperer dans une troisieme buffer la somme de la soustraction. Si ils sont egaux je recupere 0 normalement, le probleme est que je recupere0 meme si les images sont differentes.
J'ai du mal m'y prendre pour les comparer donc j'ai besoin de votre aide s'il vous plais, c'est pour mon projet bts donc bientot =_=.

Merci
samedi 6 mai 2006 à 11:32:01 | Re : Comparateur d'image

jopiou

aprés modification de mon code dans la boucle while

while(i>0)
{
interror+=abs(bufimg[i])-abs(bufimg2[i]);
  
i--;
}

j'obtiens ça

while(i>0)
{
if(bufimg[i]!=bufimg2[i]) interror+=1;
//interror+=abs(bufimg[i]-bufimg2[i]);
  
i--;
}

et ça m'as l'air de bien fonctionner ^^ (deja ça :p)
Par contre le probleme est que si il y a une faible variation de couleur cela sera compté comme erreur alors que j'aimerais eviter ça.

Comment faire svp
samedi 6 mai 2006 à 11:47:11 | Re : Comparateur d'image

jopiou

Bon bah a croire que je repond a mes propres question ...
(enfin si ça peut aider :p)

DONC remodification du while

while(i>0)
{
intimg=0;
//if(bufimg[i]!=bufimg2[i]) interror+=1;
intimg+=abs(bufimg[i]-bufimg2[i]);
if(intimg>=60) interror+=1;
i--;
}
le 60 represente une marge d'erreur (en test pour le moment donc pas super la valeur :p)
jeudi 11 mai 2006 à 00:21:06 | Re : Comparateur d'image

THEwarrior333

Es-tu sûr deja que lorsque tu charge une image ds un buffer tu ne mets pas aussi l'entete du fichier ds le buffer? Car tu peux avoir 2 images identiques ac des entetes différents. Je suppose en effet que GetLength retourne la taille entiere du fichier, cad
 l'image + l'entete.

< body>



Cette discussion est classée dans : fichier, ok, messagebox, mb, bufimg


Répondre à ce message

Sujets en rapport avec ce message

InternetOpen Proxy Authentification [ par Pontaeri51 ] Travaillant sur une apllication qui va chercher sur des infos sur le Web,J'ai un problème au niveau de la connection avec les proxy demandant une auth MessageBox [ par jlg75 ] Bonjour, J'utilise une MessageBox de la façon suivante: if (MessageBox(hWnd, (LPCWSTR) "Voulez vous vraiment quitter?", NULL [MFC] Pb avec MoveFileEx [ par philistase ] Bonjour je demande à l'utilisateur de rentrer le chemin d'un fichier à déplacer que je met ds une variable d'un EditBox:m_chemsourc et le chemin d'un ouvrir fichier texte avec borland c++6 [ par ththththth ] Bonjour a tous. Ayant été contraint d'abandonner mon cher VB6 pour passer a Borland, je suis un peu pommé (meme si ca se resemble plus ou moins).Je ch [directX] matrices de visualisation [ par SnOOpss ] Bonjour je galere pour rendre une application compatible sur plusieurs ordis. En fait elle marche nickel sur mon ordi (celui ou j'ai le compilateur) m [C++ / commdlg.h] Répertoire courant OPENFILENAME [ par GrosTony ] Salut @ tous,Dans le cadre d'un projet en cours, je doit gérer des enregistrements et chargement de fichier et je n'arrive pas à changer le répertoire nChar et l'evenement de clavier [ par unionx ] salutSous MFCvoid CAboutDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { switch(nChar) { case VK_UP:MessageBox("sniff sniff","rien 2",MB_OK); messagebox bizzare [ par lektrosonic ] bonsoir, je code en C sous Visual Studio 2005 Professionel une simple application w32.dans le code:MessageBox(hwnd_loading,(LPCWSTR)"ok0",(LPCWSTR)"", recuperer le message derreur excel en automation [ par avengerfrance ] Bonjour à tous ! Je souhaite recuperer le message que fait excel quand il ouvre un fichier HS (header xls ok mais contenu foireu... ou autre). J'ai fa Ecrire un fichier directement en hexadécimal [ par AlphaScorpius ] Bonjour,Après m'être récemment interrogé sur la manière dont l'on pouvait créer un fichier bitmap, et avoir étudié leur structure hexadécimale, j'en s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,505 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales