Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2553 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  getRGB()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

getRGB()

n°1567200
vashkiry
Posté le 30-05-2007 à 13:21:22  profilanswer
 

bonjour,
 
je souahiterai avoir quelques precision concernant la valeur enregsitrée avec la methode getRGB

Code :
  1. image.getRGB(0, 0, w, h, rgbs, 0, w);


 
je fous ca dans un tableau et ca me sort des valeurs de la forme : -6710887
 
pourquoi negatif ? est ce un chiffre a prendre entierement si je veu le comparer avec un autre ou est ce une suite de valeur pour le R, G et B??? si oui comment les differencier?
a quoi correspond ce chiffre en fait...
merci davance  
guigui

mood
Publicité
Posté le 30-05-2007 à 13:21:22  profilanswer
 

n°1567265
did-54
Posté le 30-05-2007 à 14:36:45  profilanswer
 

montre plus de code :o
ca doit te renvoyer un tableau de RGBPixels.. et tu as surement un moyen pour récupérer chaque composante dudit pixel ensuite.

n°1567325
vashkiry
Posté le 30-05-2007 à 15:39:23  profilanswer
 

voila le code ca marche.

Code :
  1. public class untitled1 {
  2. static BufferedImage image;
  3. static int a=0;
  4. public static void main(String[] args) {
  5. //int[] image1 = testImg("483.JPG" );
  6. //int[] image2 = testImg("484.JPG" );
  7. //int[] image1 = testImg("blanc.JPG" );
  8. //int[] image2 = testImg("noir.JPG" );
  9. //int[] image1 = testImg("479.JPG" );
  10. //int[] image2 = testImg("480.JPG" );
  11. int[] image1 = testImg("493.JPG" );
  12. int[] image2 = testImg("494.JPG" );
  13. //int[] image1 = testImg("481.JPG" );
  14. //int[] image2 = testImg("482.JPG" );
  15. if(image1.length==image2.length)
  16. {
  17. for(int i=0;i<image1.length;i++)
  18. {
  19. if(Math.abs(image1[i]-image2[i])>=200000)
  20. {
  21.  //System.out.println(Math.abs(image1[i]-image2[i]));
  22.  //System.out.println(image1[i]);
  23.  //System.out.println(image2[i]);
  24.  a++;
  25. }
  26. }
  27. System.out.println(a);
  28. }
  29. //System.out.println(image1[0]);
  30. //System.out.println(image2[0]);  
  31. }
  32. public static int[] testImg(String file) {
  33. File fileImg = new File(file);
  34. try {
  35. image = ImageIO.read(fileImg);
  36. } catch (IOException e) {
  37. image = null;}
  38. int w = image.getWidth(null);
  39. int h = image.getHeight(null);
  40. int[] rgbs = new int[w * h];
  41. image.getRGB(0, 0, w, h, rgbs, 0, w);
  42. return rgbs;
  43. }}


 
pour comparer j'ai simplement fait la différence de la valeur absolue de mes deux tableau.
ca marche mais je ne sais tjs pas pourquoi les valeurs retrounées par getRGB sont negative...

n°1568152
BifaceMcLe​OD
The HighGlandeur
Posté le 31-05-2007 à 17:14:27  profilanswer
 

D'abord, regarde avec la calculatrice Windows, tu verras que -6710887, c'est égal à 0xFFFFFFFFFF999999.
 
Ensuite, si tu regardes la javadoc, tu verras que le tableau d'entiers est en fait un tableau d'octets, donc il ne faut pas le lire avec des données de type int mais plutôt des séries de 3 byte.

n°1574590
wapcamer
Posté le 13-06-2007 à 19:20:55  profilanswer
 

je dirai meme 4 bytes si l'image comporte de l'alpha, vraisemblablement le cas sur les mobiles
 
par contre, ton

Citation :

Math.abs(image1[i]-image2[i])>=200000


ne signifie physiquement absolument rien (et certainement pas que la luminosité d'un px est supérieure à ... quoi d'ailleurs ??? 200000?)
 :hello:


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
n°1574777
vashkiry
Posté le 14-06-2007 à 10:37:47  profilanswer
 

je teste la différence des deux images, la valeur absolue c'est pour eviter les valeurs negatives (sachant qu'avec un + ou un - cette valeur est la mm)
les tests sont tres concluant malgré la simplicité du calcul.

n°1574779
vashkiry
Posté le 14-06-2007 à 10:39:34  profilanswer
 

le but konkretement c'est de repérer si l'image n est suffisement différente de l'image n-1 pour etre affichée. le 2000 c'est une sorte de sensibilité

n°1574789
flo850
moi je
Posté le 14-06-2007 à 10:56:38  profilanswer
 

comtpe plutot le nombre de pixels differents
 
deux images ne sont pas differentes si il elles ont bcp de pixels en commun  
 
au passage, Math.abs(image1[i]-image2[i])>=200000 ne veut rien dire, il faudrai ( au minimum ) comparer chaque composante indépendammente ( R G et B ) pour que ca ai un sens

n°1574921
wapcamer
Posté le 14-06-2007 à 14:52:30  profilanswer
 

Citation :

le but konkretement c'est de repérer si l'image n est suffisement différente de l'image n-1 pour etre affichée. le 2000 c'est une sorte de sensibilité


 

Citation :

au passage, Math.abs(image1[i]-image2[i])>=200000 ne veut rien dire, il faudrai ( au minimum ) comparer chaque composante indépendammente ( R G et B ) pour que ca ai un sens


 
C'est bien ce que j'ai voulu dire.
Si tu vx faire une différence entre 2 pixels RGB, tu dois:  
- soit faire composante par composante.
- soit sur la luminosité du pix donnée par sqrt(r²+g²+b²)


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
n°1574948
vashkiry
Posté le 14-06-2007 à 15:14:48  profilanswer
 

ok je vais faire ca
merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  getRGB()

 

Sujets relatifs
Plus de sujets relatifs à : getRGB()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR