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 :

Détection d'image dans un screen


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut Détection d'image dans un screen
    Bonsoir à tous,
    Mon groupe et moi travaillons sur un petit prog de simulation de comportement humain, en gros une IA qui manipule des progs.
    Alors, mon problème est que je voudrais détecter une image dans un screen (une autre image).
    Pour faire plus simple, imaginez que vous prenez le screen de votre écran actuel et que vous demandiez au code de détecter le bouton SGBD du site et qu'il renvoie ses coordonnées (x,y) (pour après utiliser mouseMove, mousePresse et mouseRealsed pour cliquer.
    Merci d'avance pour votre aide.

    Bonne soirée.
    castiel

  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,

    Quelle est la question exactement ?

    • Comment prendre un screen shot de l'écran en Java ?
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
      BufferedImage capture = new Robot().createScreenCapture(screenRect);
    • Comment retrouver une image dans une autre avec comparaison exacte (tous les pixels doivent être les mêmes) :
      Tu peux faire des comparaisons pixel à pixel par la méthode getRGB(x,y) de BufferedImage, en parcourant tous les pixels des 2 images (le screen shot et l'image du bouton à chercher). On peut également accèder au raster de la BufferedImage (getRaster()) et faire des comparaison de tableaux. Si les 2 images ont le même modèle de couleurs, on peut directement utiliser Arrays.equals().
    • Si c'est pour faire de la reconnaissance d'image, sans avoir l'image à chercher, c'est déjà beaucoup plus complexe. On pourrait procéder par une passe d'OCR (ce qui permettrait de trouver le texte du bouton dans l'écran), et ensuite faire une étude heuristique du contexte graphique des textes détectés par l'OCR, pour déterminer qu'on est bien dans un bouton, et le bon bouton (des fois qu'il y en aurait plusieurs). Mais on est plus vraiment dans le contexte de la programmation Java, mais plutôt dans l'algorithmique. Pour l'OCR, on peut trouver des bibliothèques (comme Java OCR), mais pour le reste, je ne pense pas qu'il y en ait de toute faite.
      Une alternative, beaucoup plus simple, serait d'utiliser les fonctions systèmes pour analyser l'UI, tant qu'elle utilise direcement les composants standards de l'environnement graphique. On peut accèder à ces éléments d'UI (analyser l'UI pour en trouver ses composants) en Java en utilisant la bibliothèque JNA, qui te permettra également d'envoyer les évenements souris vers les boutons (sur Windows, en passant par les fonctions de User32...).
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut detection d'image
    bonsoir,
    merci d'avoir pris le temps de répondre à mon problème.
    j'essaye d'éviter au max la comparaison pixel par pixel car il y a beaucoup de boutons et plusieurs phases d'analyse (évolution temporelle), au niveau complexité j'aurais un code pourris si je fais ça.
    par-contre j'aimerai bien avoir plus d'info sur la méthode des raster?

  4. #4
    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

    Mais il te faudra de toute manière faire un parcours de l'écran.

    Mais de toute manière, la plus grande difficulté pour cette méthode est d'avoir une image du bouton à chercher (qui dépend de la configuration de l'environnement : couleurs, polices, taille de police, etc...). Ça me semble illusoire de le faire dans le cas général (sauf le faire pour une configuration fixe standard). La solution par JNA me semble la plus générale.
    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.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Par défaut detection d'image
    D'accord merci :-)
    je n'ai pas trop le choix, car je pourrais très bien aller voir dans la ram et retirer les donner que je veux sauf que le but est de simuler un humain donc je dois reconnaitre les boutons et cliquer dessus.
    j'ai pensé à un Perceptron multi-couche mais pareil la phase d'apprentissage me couterait trop chere en complexité.
    Merci quand même pour votre aide :-)
    Bonne journée.
    castiel

  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
    C'est une IA avec reconnaissance optique que tu dois faire ? Ou simplement donner "l'impression de", genre langage de macro ? Dans le second cas, JNA est ce qu'il te faut. Dans le premier, avec la comparaison d'images bitmap, en fixant des conditions comme le thème de l'environnement graphique fixé, et des images de boutons fixées d'avance, et en "simulant" l'apprentissage par capture d'écran aux préalable, tu auras un ersatz de simulation assez rigide, mais pas d'IA (pas d'apprentissage, pas d'adaptation...). L'OCR pourrait être un intermédiaire. C'est sûr que tout ça dépend de l'objectif et des moyens pour l'atteindre.
    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.

Discussions similaires

  1. Détection des plans dans une image 3D
    Par paradize3 dans le forum Traitement d'images
    Réponses: 13
    Dernier message: 02/10/2007, 09h43
  2. détection du nez dans des images
    Par dz_robotix dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 15/06/2007, 01h31
  3. Réponses: 7
    Dernier message: 01/05/2007, 21h55
  4. Détection de visages dans une image en niveaux de gris
    Par bert_ dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 04/04/2007, 18h04
  5. [D6] Algo de détection de zones dans une image
    Par DMO dans le forum Langage
    Réponses: 4
    Dernier message: 25/11/2005, 15h15

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