deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 2016
-
21 sept. 2006 à 19:40
rayasahnoun
Messages postés8Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention27 mars 2007
-
27 mars 2007 à 09:00
Bonjour a tous,
Voila je cherche à créer un programme qui compare deux images, il faut donc pour cela que je lise les images pixel par pixel, hors n'ayant aucune notion des API traitent les images, je me demande par ou commencer.
BunoCS
Messages postés15342Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention26 janvier 2023103 22 sept. 2006 à 09:22
Tu veux comparer 2 images? Oui, mais 2 images "fichier" ou 2 images "dessinées"?
Dans le 1er cas, tu peux aller faire un tour sur ma source qui ouvre des fichiers BMP et qui fait qques traitements dessus
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Vous n’avez pas trouvé la réponse que vous recherchez ?
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 23 sept. 2006 à 15:39
Bon aparement je récupère bien les pixel :p car aucune fonctions ne renvoie d'erreur. Mais je voulai savoir, je les récupères dans un tableau d'int, c'est bon ? car sur la msdn c'est un pointeur de type void , donc de n'importe lequel, mais il y a t-il un type préfèrable pour récupérer et après comparer les pixels?
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 23 sept. 2006 à 16:44
Ben cela ne fonctionne pas, aparement je récupère bien les pixel des deux images, mais lors de la comparaison si j'en change un il me dit quand mm que les images sont identiques :s . Voici comment je fait en gros :
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 23 sept. 2006 à 16:55
Attend, tu ne récupère pas les pixels là. Tu ne fais que récupéré le
fichier lui même et il n'y a pas que des pixels dans un bitmap. Je te
suggère vivement, pour récupéré les pixel, d'utiliser GetDIBits. Tu
pourra ainsi stocker les pixels de tes 2 fichiers dans 2 buffers
différents et comparer c'est buffer.
En passent, la taille requis pour un buffer de pixel peut-être suppérieur au tas du processus. Il faudra envisager l'utilisation de VirtualAlloc et VirtualFree pour ça.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 23 sept. 2006 à 17:00
Ah ok je vois là. Tu récupère avec GetBitmapBits. Faut dire que le code est pas très lisible sur mon ordi :S Je ne connais pas cette fonction... désolé...
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 23 sept. 2006 à 17:05
Non mais il se plante carrément
La taille de ton tableau de pixel c'est pas la taille du fichier
Imagine : une image en noir et blanc ( donc 1 bit par pixel ) à une taille de cx * cy
Donc le tableau doit avoir la taille de cx * cy * 1
Enfin j'imagine
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 23 sept. 2006 à 17:23
Et bien ma source Get et SetDIBits montre comment fonctionne le buffer et comment lire dedans en lecture aléatoire (ATTENTION LA LECTURE N'EST PAS SÉQUENCIELLE). Il pourrait aller y jetter un coup d'oeil.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 23 sept. 2006 à 17:52
Ok , donc pour récupérer la taille je vai lire l'entete du fichier et de la j'obtien largeur et hauteur et je fait * les bit par pixel (que j'obtien aussi via l'entete du fichier bitmap), j'alloue mes deux tableaux de char, mais comment alors mettre dans met tableau de char juste les pixels? toujour avec GetBitmapBits() ?
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 24 sept. 2006 à 15:46
C'est justement ce que j'essayais d'éviter en te conseillant GetDIBits. GetPixel fera l'affaire oui mais sera horriblement lent. Si ton image est grande et que la vitesse est un facteur important, oublie cette fonction.
C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution<!--
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 24 sept. 2006 à 16:14
Ha daccord, j'ai compris ton code, mais l'ennui c'est que tu force en 24, mais si je veut par exemple comparer 2 images en 16 et que je force en 24 comme tu la fait, cela ne va pas fausser ma vérification ? et aussi il y a plusieur calcules que je ne comprend pas non plus dans ton code, enfin je sais a quoi il serve mais pas comment tu les calcules :
exemple :
ByteWidth = 4*((3*bi.bmiHeader.biWidth+3)/4); :s comment tu calcule ça ? en allouant un tableau 2 dimension de BYTE de largeur * auteur cela devrai suffir comment buffer non ?
Deplus tu rétressi la taille , enfin ça je suis pas obligé de le faire, mais voila un avantage de GetPixel, pas besoin d'allouer de mémoire.
rayasahnoun
Messages postés8Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention27 mars 2007 23 mars 2007 à 12:33
Bonjour,
Est ce que t'a codé une fonction qui permet d'accéder aux données du pixel?
quel classe t'a utilisé?(une pour l'entete du fichier BMP pour récupérer la longueur et largeur et autre pour pixel(RVB)?
Merci!
rayasahnoun
Messages postés8Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention27 mars 2007 23 mars 2007 à 16:54
Salut
j'ai besoin d'une fonction pour vérifier si un pixel a bien varié lors de deux acquisitions alors ca consiste a faire une comparaison entre deux pixels de deux images.
mon probléme comment charger les données de ces deux images (nombre de pixel, matrice de pixel..)
merci d'avance!!!
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 26 mars 2007 à 19:40
Donne moi un mail, j'ai justement fait un programme qui compare et renseigne les pixel différent entre deux image, pratique pour les fichier stéganografié :D mais juste compatible bmp, j'arive pas a rendre compatible avec jpg et autres.