j'ai essayé de binariser une image niveau de gris.
j'utilise la fonction getPixels pour transformer une image vers une matrice.
quel est la forme des nombres enregistrées dans la matrice correspond en image c'est a dire binaire,decimale ou quoi?
Version imprimable
j'ai essayé de binariser une image niveau de gris.
j'utilise la fonction getPixels pour transformer une image vers une matrice.
quel est la forme des nombres enregistrées dans la matrice correspond en image c'est a dire binaire,decimale ou quoi?
De quel pacquage et objet viens ta fonction getPixels() ?
le code de la fonction est le suivant:
public void getPixels(Image img, int pixels[], int w, int h)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 { PixelGrabber pg = new PixelGrabber(img, 0, 0, w, h, pixels, 0, w); try { pg.grabPixels(); } catch (InterruptedException e) { System.err.println("interrupted waiting for pixels!"); return; } if ((pg.status() & ImageObserver.ABORT) != 0) { System.err.println("image fetch aborted or errored"); return; } }
Lorsque tu postes du code met le entre les balises [code ] et [/code ] pour que l'indentation ne soit pas perdue.
Le tableau est une liste de pixel, Chaque ligne est stoqué à la suite de la précédente.
Cela signifie que pour avoir le pixel au coordonnées (a,b) d'une image qui mesure w de large et h de haut: il faut faire intEnsuite chaque pixel est codé en ARGB sur un int (4 octets). Les octets contiennent respectivement : l'alpha(de 0 pour transparent à 255 pour opaque), le rouge, le vert et le bleu.Code:int pixel = pixels[a+b*w];
Tu peux les extraire séparément comme ceci:
Code:
1
2
3
4 int alpha = (pixel >> 24) & 0xff; int red = (pixel >> 16) & 0xff; int green = (pixel >> 8) & 0xff; int blue = (pixel ) & 0xff;
j'ai essayé avec ce code mais rien ne s'affiche
je cherche un code qui binarise une image niveau de gris en java.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 int i; int red = 0; int blue =0; int green=0; //Boucle de binarisation de l'image AWT for (i=0;i<(l*h);i++){ blue=((matrice[i] >> 0) & 0xff); green=((matrice[i] >> 8) & 0xff); red=((matrice[i] >> 16) & 0xff); if(red>120) red=1; else red=0; if(green>120) green=1; else green=0; if(blue>120) blue=1; else blue=0; //On renvoie que le rouge car on aune image noir et blanc donc cela ne change rien matrice[i] = red;//(255 << 24) | (red<< 16) | (green<< 8) | blue;