Comparaison d'images

Fermé
fr3br0 Messages postés 22 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 16 octobre 2007 - 22 mars 2007 à 15:08
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 - 23 mars 2007 à 15:51
Bonjour,

Voilà mon problème :
J'ai une image graphique qui va servir de gabarit (pas trouvé de meilleur terme)
Cette image est sauvegardée dans un répertoire de mon PC.

Je voudrais effectuer une "recherche" de cette image dans la mémoire vidéo afin de détecter si cette image est effectivement visible à l'oeil humain

Par exemple, l'image a été affichée précédemment mais se retrouve derrière une fenêtre windows : dans ce cas, l'algorithme détecte qu'elle n'est pas "visible"

Est-ce un algorithme assez facilement réalisable (peu importe le langage) ?

Je précise que je n'ai que de lointaines connaissances en développement (turbo pascal et un peu de C)

Merci d'avance de vos réponses
A voir également:

6 réponses

andejen Messages postés 148 Date d'inscription jeudi 9 juin 2005 Statut Membre Dernière intervention 30 juillet 2008 22
22 mars 2007 à 15:23
ben deja tout ce qui concerne le traitement d'image, ce n'est pas forcement tres abordable. Apres en ce aui concerne la recherche de modeles/gabarits, il existe des bibliotheques qui permettent de faire ca sans que cela ne demande un temps trop excessif (bibliotheque MIL par exemple, Stupeflip pourra confirmer que avec le manuel a disposition cela reste tout a fait accessible (meme avec de tres vieux souvenirs en prog))

Apres pour ta question sur le "visible" ou non je pense que ca doit etre possible avec des fonctions de l'API windows. Tu selectionnes une fenetre, il n'y a pas de correspondance avec ton modele, tu en selectionnes une autre etc.. Mais la je m'avance peut etre et je veux pas dire de betises donc je laisserai quelqu'un d'autre en parler.

NB: Au fait Stupeflip, j'ai reussit a trouver le T-shirt: "Dido fan club" que tu cherchais pour ta collection.
0
fr3br0 Messages postés 22 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 16 octobre 2007
22 mars 2007 à 18:05
Merci à toi Andejen

je continue avec Stupeflip
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
22 mars 2007 à 15:42
Salut,

Peux-tu préciser un peu plus ton problème ? Tu as une image, et tu veux savoir si elle est affichée à l'écran en premier plan c'est bien ça ? Et cette image, est-elle dans un buffer ? Dans une fenêtre spécifique à l'image ? Ou sert-elle d'arrière plan pour une application ?

PS : J'en ai trouvé un avec des paroles s'mieux :
I drank too much last night, got bills to pay
my head just feels in pain

J'en ai même un pour toi :
I missed the bus and there'll be hell today
0
fr3br0 Messages postés 22 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 16 octobre 2007
22 mars 2007 à 18:02
Merci pour ta réponse Stupeflip

Je ne pensais pas avoir des réponses aussi rapides et précises : c'est sympa !

En fait pour être plus précis cette image est affichée dans uns extension firefox qui est une barre d'outil (idem pour IE)

Cette barre lance un script php qui ramène une image depuis mon serveur WEB toutes les minutes

Par contre, plusieus image peuvent être afffichée par PC (il suffit d'ouvrir plusieurs navigateurs)

Ce que je cherche à obtenir, c'est de n'exécuter mon script PHP que si la fenêtre dans laquelle le script PHP s'exécute via l'extension firefox est active (ce qui implique que l'image est affichée mais surtout est visible)

Donc si le script php s'exécute dans une fenêtre en arrière plan , réduite ou plein écran, celui-ci n'affichera pas l'image

Et si le script php s'exécute dans une fenêtre en premier-plan, celui-ci affichera l'image

Le problème c'est qu'en mode client/serveur, je n'ai pas de moyen (à ma connaissance) pour détecter cette visibilité

C'est pour cela que je pensais créer un exécutable à installer sur le poste client et dont le rôle serait de vérifier la visibilité de l'image dans le navigateur en cours. puis ensuite mise à jour d'un drapeau dans la base de donnée. Drapeau dont se servirait le script PHP pour afficher ou non l'image

En espérant que mes explications soient assez claires :-)
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
23 mars 2007 à 10:54
Je m'y connais pas trop en php mais y a surement une propriété qui indique si la page est active ou en arrière plan non ?
0
fr3br0 Messages postés 22 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 16 octobre 2007 > Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007
23 mars 2007 à 11:59
En fait, php s'exécute coté serveur et ne fait que afficher les résultats sur l'écran client (en gros) qui joue un rôle de terminal.
Pour des raisons de sécurité, lorsqu'on travail en mode client/serveur, on accède pas aux infos de la machine cliente depuis le serveur (en gros également) sauf cokkies et compagnies qui sont prévus pour cela à la base

Javascript permet d'être exécuté sur le poste client mais après renseignements sur un forum dédié, cela n'est pas possible tel que je le désirerais. Et oui c'est très précis comme demande

C'est pour cela que je me concentre sur la partie exécutable installé sur le poste client

Donc pour en revenir à ma question puisque je pense que tu as bien cerné le problème :-), penses-tu que ce soit un algorithme assez facilement réalisable ?

Il doit exister des programmes déjà développés pour ce genre de chose, à savoir, en partant d'une image graphique sauvegardées sur disque dur, retrouver la représentation graphique de cette image dans la mémoire vidéo ?
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94 > Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007
23 mars 2007 à 13:14
Je verrais bien un programme qui détecterait une fenêtre active, ça doit être possible en C++, je sais qu'en MFC on peut détecter la fenêtre active dans un programme en contenant plusieurs, ça devrait donc être possible même si la fenêtre est indépendant du programme.
0
fr3br0 Messages postés 22 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 16 octobre 2007
23 mars 2007 à 14:07
Oui je suis d'accord avec toi : je considère la détection de fenêtre active comme étant possible depuis l'exécutable

Le problème étant : que fais-je avec ce résultat ? Comment le "transférer" à mon script php pour lui dire affiche ou n'affiche pas dans cette fenêtre car elle n'est pas active

car l'éxécutable sur le pc et le script php sur le serveur s'exécute indépendamment l'un de l'autre

de plus le script php peut "s'exécuter" dans plusieurs fenetre en même temps

Pas simple en fait !
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
23 mars 2007 à 14:14
Bah tu considères l'exécutable comme un client qui envoie régulièrement (à définir selon la connexion etc) une info sur la fenêtre active. Lorsque ton serveur reçoit la réception d'un tel msg, il renvoie ce qu'il faut en conséquence.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fr3br0 Messages postés 22 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 16 octobre 2007
23 mars 2007 à 14:55
Gloups !

Je n'ai pas tout saisi là :-) : cela m'intéresse au plus haut point : peux-tu juste développer stp ?
0
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
23 mars 2007 à 15:51
Juste une question : c'est pas possible d'envoyer un signal depuis le client via ton script du genre i'm alive mais pour actif/inactif ? Un espèce de signal I'm active ? Ca t'éviterait pas mal de tracas.

Sinon ben tu récupères donc une propriété "Active" avec un identifiant correspondant à ta page.
Ton serveur peut se mettre en réception, attendant des requêtes du client. Tu peux faire un thread dédié à la réception de la propriété "Active". Tu y fais une réception non bloquante dans une boucle. Lorsqu'une propriété active est reçue avec l'identifiant de la page, tu fais passer l'id à ton main thread qui va faire l'envoi de ton image. Si ta page n'est pas active (test sur l'id récupérée), ben tu attends !
Je vois le truc comme ça en gros, y a ptet une autre et meilleure solution bien sur.

Bon courage en tout cas !
0