KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012
-
18 mars 2012 à 20:22
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012
-
27 mai 2012 à 00:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 27 mai 2012 à 00:09
Bonsoir,
Merci pour ta réponse.
L'image du dossier n'était qu'à titre d'exemple.
Par exemple dans plusieurs images, je cherche une meme image mais à position différente.
En gros sa balayerai des coin xy haut gauche de ton ecran jusque bas droit, comme le code cherche pixel qui à été déposé.
Mais à la place d'un pixel, et bien un groupe de pixel.
mafieulemouton
Messages postés24Date d'inscriptionlundi 30 juin 2008StatutMembreDernière intervention26 janvier 2010 26 mai 2012 à 23:18
Effectivement ça risque d’être long et très peu fiable d'autant qu'avec windows 7 la taille des icônes se change d'un simple coup de molette de souris.
Utilise plutôt l'object filesystemwatcher() inclus en natif en vb.net pour surveiller les activités de ton dossier. Les positions des icones et le format d'affichage doivent être dans un fichier caché dans ton dossiers desktop, à ta place je chercherais plus dans ce sens, tu auras un code rapide grace aux objects de windows.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 19 mai 2012 à 11:07
Bonjour,
Dis moi, j'espère que je pollue pas trop ton poste, mais j'aurai une petite question.
Dans cette source, tu explique comment comparer deux images en connaissant ces coordonnée X, Y.
Serai t-il possible, de chercher une image sans connaitre ces coordonnées ?
Par exemple je cherche l'image d'un dossier sur le bureau, il detecte la position et me l'affiche dans un textbox.. et à chaque fois que je bouge le dossier, le textbox se met à jours.
Je suppose que ce sera avec une boucle et que le traitement sera beaucoup plus lourd.
Merci d'avance et désolé de squatter ta source x)
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 17 mai 2012 à 00:06
Je viens de découvrir comment mettre une note.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 17 mai 2012 à 00:05
Salut,
Je vois un peu tard (^^) que je n'avais pas donné suite à ton message.
Ok merci pour le complément d'information.
Je me sert de ton code et il est 100% opérationnel, merci encore.
A plus tard.
mafieulemouton
Messages postés24Date d'inscriptionlundi 30 juin 2008StatutMembreDernière intervention26 janvier 2010 19 mars 2012 à 00:20
Les petites differences sont deja tolerees avec les valeurs par defaut.
mafieulemouton
Messages postés24Date d'inscriptionlundi 30 juin 2008StatutMembreDernière intervention26 janvier 2010 19 mars 2012 à 00:18
Le dernier chiffre augmente la tolérance en terme de couleurs. Si c'est proche de 1 ça veut dire strictement identique, si c'est proche de 100, ça veut dire vaguement ressemblant.
25 c'est la taille de l’échantillon, normalement c'est déjà assez tolérant, pas besoin d'y toucher.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 19 mars 2012 à 00:14
Yessssssss!!
c'était bien ça, en l'enregistrant au format tiff ça va tout de suite mieu.
Bon ben niquel merci beaucoup pour ton aide :)
Sinon ça m'interesse quand même de savoir comment elle pourrai être reconnu identique même si elles comportent des petites différence : opacité, petit pixel en plus, légère différence quoi.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 19 mars 2012 à 00:10
En fesant un macro avec mon oeil (lol) j'ai bien l'impression que l'image que je sauvegarde en .jpg perd en qualité et du coup n'est plus identique.
Ca peut etre ça ?
Sinon j'ai vu que tu parle de tolérance, comment augmenter la tolérance a ce point?
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 19 mars 2012 à 00:04
Merci,
Négatif c'est toujours false, même si je modifie image en bitmap.
mafieulemouton
Messages postés24Date d'inscriptionlundi 30 juin 2008StatutMembreDernière intervention26 janvier 2010 18 mars 2012 à 23:56
Si le rognage est correct, c'est bizarre que le résultat ne soit pas bon.
Essayes ça:
Le premiers parametre est censé etre une image pas un bitmap. Et j'ai mis false pour la proportion parce que les deux images ne sont pas forcement exactement au même format.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 18 mars 2012 à 23:41
Autant pour moi je viens de trouver comment rogner de la bonne façon :
Dim debutx = "204"
Dim debuty = "67"
Dim finx = "305"
Dim finy = "169"
En revanche mes images ne sont toujours pas détécté comme identique.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 18 mars 2012 à 23:31
Bonsoir,
Je ne comprend pas, j'ai bien récupéré les bonnes positions, mais quand je compare l'image présente dans la picturebox avec celle que j'ai sauvegardé dans un fichier, pourtant dans ma picturebox c'est la même.
Par contre le rognage n'as pas fonctionnai comme je le souhaiter, alors jai du redimentionner la picturebox en fesant finx - debutx et pareil pour y.
C'est peut etre ça mon problème ?
Moi je vois limage comme celle que j'ai sauvegardé mais c'est parceque jai modifier la taille de ma picturebox.
Comment je peux faire pour quelle sois reconnu comme mon fichier sauvegardé?
OpenFileDialog1.ShowDialog()
Dim Bounds As Rectangle
Dim Capture As System.Drawing.Bitmap
Dim Graph As Graphics
Bounds = Screen.PrimaryScreen.Bounds
Capture = New System.Drawing.Bitmap(Bounds.Width, Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
Graph = Graphics.FromImage(Capture)
Graph.CopyFromScreen(Bounds.X, Bounds.Y, 0, 0, Bounds.Size, CopyPixelOperation.SourceCopy)
Dim debutx = "204"
Dim debuty = "67"
Dim finx = "305"
Dim finy = "169"
PictureBox1.Width = (finx - debutx)
PictureBox1.Height = (finy - debuty)
PictureBox1.Image = RognImage(Capture, debutx, debuty, finx, finy)
Dim cheminImage1 As Bitmap = PictureBox1.Image
Dim cheminImage2 As String = OpenFileDialog1.FileName
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 18 mars 2012 à 21:03
Ah oui exact avec le code vers lequel tu m'as diriger ça devrai faire l'affaire je vais test ça!
Merci =)
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 18 mars 2012 à 20:48
Salut merci pour ta réponse on ne peux plus rapide.
En fait j'ai déjà récupéré sur ce site un programme qui capture l'écran, je selectionne la partie désiré,et ça m'enregistre l'image avec les coordonné X,Y de MouseDown et de MouseDown.
N'y à t-il pas moyen de comparer direct l'image à l'écran sans devoir refaire une capture ?
crdlt.
mafieulemouton
Messages postés24Date d'inscriptionlundi 30 juin 2008StatutMembreDernière intervention26 janvier 2010 18 mars 2012 à 20:37
La solution la plus simple: avant d'appeler ma fonction, fais le rognage de ton image a comparer.
KcHeY
Messages postés261Date d'inscriptiondimanche 23 mai 2004StatutMembreDernière intervention22 septembre 2012 18 mars 2012 à 20:22
Salut !
Niquel ton petit programme ça devrai me servir.
Dis moi, comment pourrai-je faire pour qu'il compare la première image chargé via OpenFileDialog, et la seconde en donnant une position Y et X (de l'écran) de départ et de fin ?
Exemple :
Je fais un screen d'une partie de mon ecran, j'enregistre cette image en sauvegardant les positions, et depuis ton programme je lui dis de verifier à la position X,Y début, jusque X,Y fin si l'image est la même que celle ouvert via OpenFileDialog ?
Je sais pas si depuis tout ce temps tu seras encore dans le coin, mais je suis cette discution au cas ou tu refais surface et que tu pourrai m'orienter.
27 mai 2012 à 00:09
Merci pour ta réponse.
L'image du dossier n'était qu'à titre d'exemple.
Par exemple dans plusieurs images, je cherche une meme image mais à position différente.
En gros sa balayerai des coin xy haut gauche de ton ecran jusque bas droit, comme le code cherche pixel qui à été déposé.
Mais à la place d'un pixel, et bien un groupe de pixel.
26 mai 2012 à 23:18
Utilise plutôt l'object filesystemwatcher() inclus en natif en vb.net pour surveiller les activités de ton dossier. Les positions des icones et le format d'affichage doivent être dans un fichier caché dans ton dossiers desktop, à ta place je chercherais plus dans ce sens, tu auras un code rapide grace aux objects de windows.
19 mai 2012 à 11:07
Dis moi, j'espère que je pollue pas trop ton poste, mais j'aurai une petite question.
Dans cette source, tu explique comment comparer deux images en connaissant ces coordonnée X, Y.
Serai t-il possible, de chercher une image sans connaitre ces coordonnées ?
Par exemple je cherche l'image d'un dossier sur le bureau, il detecte la position et me l'affiche dans un textbox.. et à chaque fois que je bouge le dossier, le textbox se met à jours.
Je suppose que ce sera avec une boucle et que le traitement sera beaucoup plus lourd.
Merci d'avance et désolé de squatter ta source x)
17 mai 2012 à 00:06
17 mai 2012 à 00:05
Je vois un peu tard (^^) que je n'avais pas donné suite à ton message.
Ok merci pour le complément d'information.
Je me sert de ton code et il est 100% opérationnel, merci encore.
A plus tard.
19 mars 2012 à 00:20
19 mars 2012 à 00:18
Le dernier chiffre augmente la tolérance en terme de couleurs. Si c'est proche de 1 ça veut dire strictement identique, si c'est proche de 100, ça veut dire vaguement ressemblant.
25 c'est la taille de l’échantillon, normalement c'est déjà assez tolérant, pas besoin d'y toucher.
19 mars 2012 à 00:14
c'était bien ça, en l'enregistrant au format tiff ça va tout de suite mieu.
Bon ben niquel merci beaucoup pour ton aide :)
Sinon ça m'interesse quand même de savoir comment elle pourrai être reconnu identique même si elles comportent des petites différence : opacité, petit pixel en plus, légère différence quoi.
19 mars 2012 à 00:10
Ca peut etre ça ?
Sinon j'ai vu que tu parle de tolérance, comment augmenter la tolérance a ce point?
19 mars 2012 à 00:04
Négatif c'est toujours false, même si je modifie image en bitmap.
18 mars 2012 à 23:56
Essayes ça:
MsgBox(ComparerDeuxImages((PictureBox1.Image), Image.FromFile(cheminImage2), False, 25, 5))
Le premiers parametre est censé etre une image pas un bitmap. Et j'ai mis false pour la proportion parce que les deux images ne sont pas forcement exactement au même format.
18 mars 2012 à 23:41
Dim debutx = "204"
Dim debuty = "67"
Dim finx = "305"
Dim finy = "169"
Dim w1 = (finx - debutx)
Dim h1 = (finy - debuty)
PictureBox1.Image = RognImage(Capture, debutx, debuty, w1, h1)
En revanche mes images ne sont toujours pas détécté comme identique.
18 mars 2012 à 23:31
Je ne comprend pas, j'ai bien récupéré les bonnes positions, mais quand je compare l'image présente dans la picturebox avec celle que j'ai sauvegardé dans un fichier, pourtant dans ma picturebox c'est la même.
Par contre le rognage n'as pas fonctionnai comme je le souhaiter, alors jai du redimentionner la picturebox en fesant finx - debutx et pareil pour y.
C'est peut etre ça mon problème ?
Moi je vois limage comme celle que j'ai sauvegardé mais c'est parceque jai modifier la taille de ma picturebox.
Comment je peux faire pour quelle sois reconnu comme mon fichier sauvegardé?
OpenFileDialog1.ShowDialog()
Dim Bounds As Rectangle
Dim Capture As System.Drawing.Bitmap
Dim Graph As Graphics
Bounds = Screen.PrimaryScreen.Bounds
Capture = New System.Drawing.Bitmap(Bounds.Width, Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
Graph = Graphics.FromImage(Capture)
Graph.CopyFromScreen(Bounds.X, Bounds.Y, 0, 0, Bounds.Size, CopyPixelOperation.SourceCopy)
Dim debutx = "204"
Dim debuty = "67"
Dim finx = "305"
Dim finy = "169"
PictureBox1.Width = (finx - debutx)
PictureBox1.Height = (finy - debuty)
PictureBox1.Image = RognImage(Capture, debutx, debuty, finx, finy)
Dim cheminImage1 As Bitmap = PictureBox1.Image
Dim cheminImage2 As String = OpenFileDialog1.FileName
MsgBox(ComparerDeuxImages((cheminImage1), Image.FromFile(cheminImage2), True, 25, 5))
18 mars 2012 à 21:03
Merci =)
18 mars 2012 à 20:48
En fait j'ai déjà récupéré sur ce site un programme qui capture l'écran, je selectionne la partie désiré,et ça m'enregistre l'image avec les coordonné X,Y de MouseDown et de MouseDown.
N'y à t-il pas moyen de comparer direct l'image à l'écran sans devoir refaire une capture ?
crdlt.
18 mars 2012 à 20:37
Tu as plein de codes pour ça sur vbfrance: http://www.vbfrance.com/codes/ROGNER-IMAGE_38867.aspx
18 mars 2012 à 20:22
Niquel ton petit programme ça devrai me servir.
Dis moi, comment pourrai-je faire pour qu'il compare la première image chargé via OpenFileDialog, et la seconde en donnant une position Y et X (de l'écran) de départ et de fin ?
Exemple :
Je fais un screen d'une partie de mon ecran, j'enregistre cette image en sauvegardant les positions, et depuis ton programme je lui dis de verifier à la position X,Y début, jusque X,Y fin si l'image est la même que celle ouvert via OpenFileDialog ?
Je sais pas si depuis tout ce temps tu seras encore dans le coin, mais je suis cette discution au cas ou tu refais surface et que tu pourrai m'orienter.
Merci +++