#1 Le 20/10/2011, à 23:04
- sputnick
[résolu] python - trouver les coordonnées d'une image dans une autre
Salut,
comment peut-on ( un peu comme sikuli ) chercher dans une image une partie de cette image, de préférence en tache de fond sans avoir à ouvrir de GUI ? (Graphic User Interface)
En l’occurrence, il s'agit de retrouver les coordonnées du 6 (par exemple) dans
Difficulté : le chiffre 6 n'est pas tout à fait le même dans ce deuxième exemple
il est décalé dans sa hauteur de 1 px par rapport au fond bleu.
Si vous avez même ne serais-ce qu'une piste, explorons là
++sputnick;
Edit : mes pistes :
- opencv problème : le binding python n'est plus maintenu et ne compile pas http://code.google.com/p/pyopencv/issues/detail?id=46
- xpresser problème, dépend de opencv
- le plus pertinent dans mes recherches est le terme template matching ( utilisé par sikuli )
Dernière modification par sputnick (Le 24/10/2011, à 15:46)
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver.
https://sputnick.fr
Hors ligne
#2 Le 21/10/2011, à 07:49
- moths-art
Re : [résolu] python - trouver les coordonnées d'une image dans une autre
Je pense que du moment ou ça s'arrête à ton exemple, opencv s'apparente à un tank pour tuer une mouche.
Le mieux si tu es en python est d'utiliser les données binaires de ton image.
En effet, la zone rectangulaire qui entoure le 6 (pas le bouton en entier) est exactement le même sur les 2 images.
Il suffit alors d'identifier cette zone qui va te donner une chaine binaire puis la "matcher" sur les autres images afin d'identifier ces coordonnées.
Un conseil par avance sur ce type de projet : crée toi directement le maximum de tests fonctionnels afin de valider ton code... ça peut paraitre rébarbatif au premier abord mais tu vas vite te rendre compte du côté pernicieux de ce type de projet.(il suffit de jeter un coup d'oeil sur les tests effectués sur opencv pour s'en convaincre.)
Un conseil : utilise le très bon logiciel "hachoir" (pour l'identification de la chaine binaire) :
sudo apt-get install python-hachoir-wx
En te plongeant dans le code (en python également), tu trouveras certainement des pistes pour ton code :
https://bitbucket.org/haypo/hachoir/overview
Site : https://mothsart.github.io Dépôts Git : https://github.com/mothsart PPAs : https://launchpad.net/~jerem-ferry
Hors ligne
#3 Le 21/10/2011, à 15:33
- moths-art
Re : [résolu] python - trouver les coordonnées d'une image dans une autre
Si en l'occurrence, tu as réellement un dégradé de couleur bleu autour du 6 différent dans les 2 fichiers... ça devient un peu plus compliqué mais gère plus :
Tu fais les choses par étapes (diviser pour régner) :
1/ tu remplace toutes les couleurs autre que du blanc par du noir (ou une autre couleur)
2/ tu matches la chaine binaire résultante contenant la zone rectangulaire du 6 avec cette fois ci un fond uniforme.
3/ tu récupères tes coordonnés
4/ tu remercies l'équipe de Ubuntu-fr et met [résolu] dans le titre
Dernière modification par moths-art (Le 21/10/2011, à 15:34)
Site : https://mothsart.github.io Dépôts Git : https://github.com/mothsart PPAs : https://launchpad.net/~jerem-ferry
Hors ligne
#4 Le 24/10/2011, à 15:46
- sputnick
Re : [résolu] python - trouver les coordonnées d'une image dans une autre
Merci pour les pistes, l'idée de passer en monochrome est tout à fait pertinente.
Donc j'utilise au final PIL + numpy (arrays) + un peu de math appliquées
Ça marche du tonnerre \o/
Je vous montrerais le taf fini si vous le souhaitez, c'est couplé avec du screen-scraping en PyQt4.QtWebKit pour se loguer sur un site
Le projet n'est pas fini, même si je trouve les coordonnées, je ne suis pas encore parvenu à me loguer, mais j'y travaille. (résolu quand même par rapport au titre du post)
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver.
https://sputnick.fr
Hors ligne
#5 Le 26/10/2011, à 09:45
- sputnick
Re : [résolu] python - trouver les coordonnées d'une image dans une autre
Yopla, comme baptême python j'ai été servi ^^
http://www.sputnick-area.net/scripts/LCL.tar.bz2
Copie des commentaires de debut de script :
LCL-dl-QIF.py permet de récupérer ses mouvements de comptes LCL au format QIF.
Il permet de remplir la grille de login aléatoire mise en place mi-octobre 2011
A utiliser à vos risques et périls, LCL pourrait en interdire cet usage.
Tout retour est le bienvenu (je suis débutant en python, ne pas hésiter à me
suggérer des améliorations)
------------------------------------------------------------------------------
Merci :
- spynner : navigateur programmable supportant le javascript et les cookies à base de PyQt4 + webkit
https://github.com/rndbit/spynner
http://code.google.com/p/spynner/- usage de numpy
http://stackoverflow.com/questions/3049 … ing-python- pistes de recherche
- PIL
http://stackoverflow.com/questions/7825 … -image-map
http://forum.ubuntu-fr.org/viewtopic.php?id=683671
- PyQt4 + webkit
http://forum.kubuntu-fr.org/viewtopic.php?id=683651
Cette version ne télécharge pas les QIFs comme annoncé, mais affiche le relevé de compte.
Les QIFs c'est mon prochain kiff, c'est pas la plus dur, le plus dur c'était le traitement de l'image.
J'ai retourné tout le web pour me documenter, et mon challenge de la semaine résolu
Si vous êtes intéressés, le code est largement commenté.
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver.
https://sputnick.fr
Hors ligne
#6 Le 28/10/2011, à 05:49
- sputnick
Re : [résolu] python - trouver les coordonnées d'une image dans une autre
Voici la version fonctionnelle qui permet de récupérer les fichiers .QIX sur LCL pour les applis de gestion de finances : http://sputnick-area.net/scripts/LCL-dl-QIF.tar.bz2
Je sais, un peu partout, tout le monde s'entretue, c'est pas gai, mais d'autres s'entrevivent, j'irai les retrouver.
https://sputnick.fr
Hors ligne
#7 Le 28/10/2011, à 21:44
- k3c
Re : [résolu] python - trouver les coordonnées d'une image dans une autre
Merci de partager ton code, c'est toujours instructif et intéressant !k3c
Debian 12 sur Thinkpad reconditionné
Hors ligne