Trouver les pixel de couleur noir

blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010 - 6 mai 2010 à 21:27
blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010 - 7 mai 2010 à 19:20
Bonsoir j'aurais beosin de votre aide car je bloques :(
Je souhaiterais a mon code pouvoir compter le nombre de pixel de couleur noir de l'image en octects et ameliorer la rapiditer de mon code car actuellement il est long a executer le systeme est long a tous afficher.
Merci d'avance de vos reponses, mon code se trouve ci joint.

<secret>

#include
#include <fstream>
using namespace std;
#include<windows.h>

void main ()
{
ifstream fichier ("nomfichier.bmp", ios::in | ios::binary);
BITMAPFILEHEADER enteteBitmap;
BITMAPINFOHEADER infoBitmap;
int nbPixels, i;
byte *tableauPixels;

if (!fichier)
cout << "Erreur d'ouverture" << endl;
else
{
//! Lecture des entêtes
fichier.read ((char*)&enteteBitmap, sizeof(BITMAPFILEHEADER));
fichier.read ((char*)&infoBitmap, sizeof(BITMAPINFOHEADER));

//! Calcul du nombre de pixels à lire
nbPixels = enteteBitmap.bfSize - enteteBitmap.bfOffBits;

//! Allocation dynamique pour les données 24 bits
tableauPixels = new byte[nbPixels];

//! Lecture du fichier
fichier.read ((char*)tableauPixels, nbPixels);
fichier.close();


//! Affichage des données
for (i = 0; i < nbPixels / 3; i++)
{
cout << "\tB:" << (int)tableauPixels[3 *i];
cout << "\tG:" << (int)tableauPixels[(3 * i) + 1];
cout << "\tR:" << (int)tableauPixels[(3 * i) + 2] << " ";
if (i % 3 == 2) cout << endl;
}
cout << endl;
cout << endl;
cout << "Taille de l'image : " << nbPixels << " octets" << endl;
cout << endl;
}
}
</secret>

2 réponses

Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
7 mai 2010 à 09:08
Salut
C'est long, c'est parce que tu affiches une image dans une console! Regarde mes sources, il y a plein d'exemple de traitement de l'image, d'affichage d'image. Sinon la méthode est bonne si tu enlèves les cout.

Pour rechercher les pixels noir, rien de plus facile: il suffit d'un parcours sur l'image.
for(i=NbPixel/3-1;i>=0;i--)
  if(tableauPixel[i*3]==0 && tableauPixel[i*3+1]==0 &&tableauPixel[i*3+2]==0)
    //C'est un pixel noir!



A+


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
blastrame Messages postés 10 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 8 juin 2010
7 mai 2010 à 19:20
Merci de ton aide c'est bien ce que je pensais
mais pourquoi faire i-- au lieu de i++, y a t'il une raison?

for(i=NbPixel/3-1;i>=0;i--)
if(tableauPixel[i*3]==0 && tableauPixel[i*3+1]==0 &&tableauPixel[i*3+2]==0)
//C'est un pixel noir!
0