IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Lire pixels sous un triangle


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Par défaut Lire pixels sous un triangle
    Bonjour,

    J'ai une image en noir et blanc. Je lis la couleur de chaque pixel dans un carré de cette image.
    C'est à dire je fais un double boucle for pour lire la couleur des pixels sous un carré par exemple un carré au centre de mon image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(int i = 1*(img.getWidth())/3; i< 2*(img.getWidth())/3;i++){
                        for(int j = (img.getHeight())/3; j< 2*(img.getHeight())/3; j++){
     
                            int p = img.getRGB(i, j);
     
                            int r = (p>>16)&0xff;
     
                            if(r == 0){
                                cinq++;
                            }
     
                        }
                     }
    Maintenant j'aimerais utilisé la même technique pour lire la couleur des pixels sous un triangle rectangle.
    Par exemple celui ci :
    Nom : triangle.JPG
Affichages : 523
Taille : 15,0 Ko

    Merci beaucoup

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il s'agit je suppose de le faire mathématiquement (et non en cherchant les pixels noirs de la diagonale). Pour un triangle rectangle de base AB=b, et de hauteur CB=h, pour tout i, 0<=i<b, d'après Thalès, on sait que la hauteur du triangle rectangle ABiCi hi = i/b × h. Donc, il te suffit de parcourir les i de 0 à b, et pour chaque i, de parcourir les j de h - hi à h.

    Nom : tr.png
Affichages : 481
Taille : 3,6 Ko
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Par défaut
    Merci beaucoup pour les maths ça ne fait pas de mal.

    Alors mon triangle ne se dessine pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int b = (imgtriangle.getWidth())/4 ;
            int h = (imgtriangle.getHeight())/4 ;
     //dessiner le triangle
             for(int i = 0; i< b;i++){
                for(int j = h-((i/b)*h); j< h; j++){
     
                       imgtriangle.setRGB(i, j,Color.orange.getRGB());
     
                }
             }
    imgtriangle est la variable bufferisée dans laquelle je place mon image.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Par défaut
    grâce à votre schéma j'ai pu réfléchire autrement :

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     //dessiner le triangle
             for(int i = 0; i< b;i++){
                for(int j = 0; j< b - i; j++){
     
                       imgtriangle.setRGB(i, j,Color.orange.getRGB());
     
                }
             }
    J'obtiens bien un triangle rectangle merci beaucoup

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Moux88 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     //dessiner le triangle
             for(int i = 0; i< b;i++){
                for(int j = 0; j< b - i; j++){
     
                       imgtriangle.setRGB(i, j,Color.orange.getRGB());
     
                }
             }
    M'enfin, là, c'est un cas particulier (triangle rectangle isocèle (dont l'hypothénuse est la diagonale d'un carré))

    Et on peu dessiner ça avec la méthode draw() et un Path2D.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    La différence entre les mathématiques et Java, c'est qu'en Java la division de 2 int tels que le diviseur soit plus grand que le dividende est toujours nulle. Il faut donc diviser des double. D'ailleurs, pour avoir de la précision, il vaudrait mieux travailler tout en double, et convertir en int au dernier moment (au moment du getRGB/setRGB). Sinon, je suppose que c'est pour faire un test là ? Parce que sinon vaut mieux dessiner la ligne avec la méthode drawLine (une simple boucle ne suffit pas pour tracer une ligne continue).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Par défaut
    Ah oui en effet mon hypoténuse n'est pas continue à cause des "int".
    Oui c'est pour faire des tests là.

    Je vais prendre en compte vos remarques pour la suite de mon projet, pour l'instant c'est suffisant.
    Mais plus tard j'aurais certainement besoin d'améliorer la précision.

    Merci beaucoup

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Par défaut
    Ah je suis déjà confronté à un autre problème
    là j'ai dessiné mon triangle sur le coin supérieur gauche de mon image

    Si je veux le même sur le coin supérieur droit comment dois-je faire ?
    je n'arrive pas à changer les valeurs de ma double boucle je tombe toujours en dehors de l'image.

    et oui en effet j'ai fait un triangle isocèle. Je vais réssayer avec la formule pour un triangle rectangle

    Nom : coin.JPG
Affichages : 481
Taille : 73,2 Ko

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pixel sous VLC et pas WMP
    Par antoine974 dans le forum Vidéo
    Réponses: 1
    Dernier message: 08/05/2009, 09h33
  2. Le fameux bug des 3 pixels sous IE6
    Par RootsRagga dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 28/03/2009, 19h14
  3. lire fichier sous reseau
    Par cigala5555 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 16/05/2008, 16h39
  4. Décalage 2 pixels sous IE
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/04/2006, 23h48
  5. Réponses: 23
    Dernier message: 23/03/2006, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo