je débute dans la programmation en c# et je suis déjà perdu, pourtant ça me parait simple comme question .
alors, j'ai une image binaire de plus de (15.000*25.000)pixel; et je veux récupérer les coordonnées de tous les pixel noir. j'ai travaillé avec deux méthodes et pour les deux l'ordinateur n’arrête pas de calculer (plus de 20 minute )
et voici les deux méthodes
1/ (la plus simple mai pas efficace )
Bitmap p = new Bitmap(chemin_de_l_image);
for (int y = 0; y < p.Height; y++)
{
for (int x = 0; x < p.Width; x++)
{
Color pixelColor = p.GetPixel(x, y);
if (pixelColor.G != 255)
{
mm++;
textBox4.Text += x + ";" + y + "/" + "\n";
}
progressBar1.Value = (mm*100) / (p.Height*p.Width);
}
}
2/ 2éme méthode ( plus complexe mais aussi pas efficace )
Bitmap bitmap = new Bitmap(chemin_de_l_image);
int width = bitmap.Width;
int height = bitmap.Height;
unsafe
{
BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, width,
height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
byte* newPixel = (byte*)(void*)bmpData.Scan0;
byte swap;
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
{
if (newPixel[2] != 255)
{
textBox4.Text += x + ";" + y + "/" + "\n";
}
newPixel += 4;
progressBar1.Value = ((1+x) * (1+y)) / 100;
}
bitmap.UnlockBits(bmpData);
}
pour la deuxième méthode l'image n'est pas binaire elle est en 32 bits
alors si quelqu'un a une autre méthode ou des réctifications je suis preneur
et un grand merci a tous.
_________________________________
la curiosité est un noble défaut.
La première méthode est à proscrire... le GetPixel() est très lent à ce que j'ai déjà pu constater !!
Concernant la deuxième méthode, rien que le fait de modifier textBox4 dans ta boucle prend énormément de temps...
Essayes d'en faire le moins possible dans cette boucle !
Je te propose ceci :
mille merci pour ta repense ci rapide et efficace
j'ai testé et ça marche a merveille le temps est 0.45 seconde
le problème été donc dans le remplissage du textbox (maudit textbox)
et pour la liste je vais la remplir dans une base de données
une autre quistion svp:
- si je remplis la base dans la boucle ça ne sera pas leng ?
_________________________________
la curiosité est un noble défaut
bonjour par contre moi j ai un souci en faite j ai luminaire qui des leds et je dois detecter les leds eteinte donc je me suis dit de faire 9 rectangle sous forme tableau et dans chaque case du rectangle je mets une condition si le pixel > 255 donc la led est blanche donc c allumer sinn c'est noir donc etiente mais le bleme je c pas comment adapter mes tableaux à mon image pour que je puisse detecter la leds eteinte
si vous voulez que je envoie la photo du luminaire pour avoir une idee bien claire il suffit juste de demander