Page 1 sur 1

PixelSearch problème de comptabilité

Posté : mer. 24 févr. 2021 23:55
par Tekky
Bonjour, j'ai fais un programme permettant de trouver la couleur d'un pixel rechercher, et de cliquer dessus par la suite. Le programme fonctionne parfaitement sur mon ordinateur, mais quand je l'essaye sur l'ordinateur d'un ami, il ne clique pas sur la bonne couleur.

J'aimerais donc savoir si, la couleur des pixels peuvent varier en fonction de la carte graphique? (je précise que le pixel reste a la même position, et qu'il est bleu, par exemple mais que le bleu est le même a l'œil nue mais peut être pas pour la fonction pixelsearch).

Ou si la cause peut venir d'autre part...

Cordialement, merci de toute réponses ! :D

Re: PixelSearch problème de comptabilité

Posté : jeu. 25 févr. 2021 02:46
par TommyDDR
Non, la couleur du pixel ne variera pas, au pire suivant la qualité de l'écran il apparaitra plus ou moins bleu à vos yeux, mais la donnée elle, reste la même.
Êtes-vous sur que le pixel est EXACTEMENT de la même couleur ?
Essayez de voir le code hexa de la couleur avec AutoIt Window Info (disponible avec l'installation d'autoit).

Re: PixelSearch problème de comptabilité

Posté : jeu. 25 févr. 2021 12:34
par Tekky
TommyDDR a écrit : jeu. 25 févr. 2021 02:46 Non, la couleur du pixel ne variera pas, au pire suivant la qualité de l'écran il apparaitra plus ou moins bleu à vos yeux, mais la donnée elle, reste la même.
Êtes-vous sur que le pixel est EXACTEMENT de la même couleur ?
Essayez de voir le code hexa de la couleur avec AutoIt Window Info (disponible avec l'installation d'autoit).
Bonjour et merci de votre réponse..

J'ai bien vérifier sur les deux ordinateurs via l'outil d'autoit l'hexa de la couleur, et c'est bien la même. Mais sur l'ordinateur de mon ami, il ne clique pas sur le bon pixel, mon code :

                $flashXb = 705
      $flashYb = 391
      $flashXb2 = 1217
      $flashYb2 = 1018
      _ConvertXY($flashXb, $flashYb)
      _ConvertXY($flashXb2, $flashYb2)$rtp = PixelSearch($flashXb, $flashYb,  $flashXb2, $flashYb2, 0x8c0000,10,1) ;search for random move and put the coords on rtp variable
      If isArray($rtp) Then

         MouseClick ("Left", $rtp [0], $rtp [1]) ; click on item
Et ci-dessous la fonction _convertXY qui me permet d'utiliser les coordonnées sur n'importe quelle dimmension d'écran.
Func _ConvertXY(ByRef $Xin, ByRef $Yin)
     $Xin = Round( ($Xin / 1920) * @DesktopWidth )
     $Yin = Round( ($Yin / 1080) * @DesktopHeight )
EndFunc

Re: PixelSearch problème de comptabilité

Posté : jeu. 25 févr. 2021 15:20
par TommyDDR
Quand vous dites : Il ne clic pas sur le bon pixel, cela veut dire qu'un pixel est quand même trouvé ?
Si oui : avez vous vérifié la couleur de ce pixel ? (il est surement de la couleur souhaité)

Sinon :

je suppose qu'il manque un retour à la ligne avant $rtp = PixelSearch

Voilà ce que vous devez faire :
avant $rtp = PixelSearch, ajoutez :
ConsoleWrite($flashXb & ", " & $flashYb & " -> " & $flashXb2 & ", " & $flashYb2 & @CRLF)

Puis avec AutoIt Window Info (AWI), notez les coordonnées du pixel que vous cherchez

En suite, vous comparez les coordonnées obtenues via AWI et regardez si elles se situent bien à l'intérieur du cadre fourni dans le ConsoleWrite

Re: PixelSearch problème de comptabilité

Posté : jeu. 25 févr. 2021 21:08
par Tekky
TommyDDR a écrit : jeu. 25 févr. 2021 15:20 Quand vous dites : Il ne clic pas sur le bon pixel, cela veut dire qu'un pixel est quand même trouvé ?
Si oui : avez vous vérifié la couleur de ce pixel ? (il est surement de la couleur souhaité)

Sinon :

je suppose qu'il manque un retour à la ligne avant $rtp = PixelSearch

Voilà ce que vous devez faire :
avant $rtp = PixelSearch, ajoutez :
ConsoleWrite($flashXb & ", " & $flashYb & " -> " & $flashXb2 & ", " & $flashYb2 & @CRLF)

Puis avec AutoIt Window Info (AWI), notez les coordonnées du pixel que vous cherchez

En suite, vous comparez les coordonnées obtenues via AWI et regardez si elles se situent bien à l'intérieur du cadre fourni dans le ConsoleWrite
En effet, un retour a la ligne est manquant, erreur de ma part lors du copié / coller.
Ensuite, oui il clique quand même sur un pixel, il trouve donc un pixel... Mais la couleur est différente (je cherche du rouge et mon programme clique sur du rose foncer).
Concernant la ligne du ConsoleWrite, je ne comprends pas bien son utilité...

Re: PixelSearch problème de comptabilité

Posté : jeu. 25 févr. 2021 22:28
par TommyDDR
C'est étrange (et compliqué à débugger sans le code complet + la fenêtre de ce que le programme est censé trouver).
Le ConsoleWrite c'est la base du debug, quand quelque chose de fonctionne pas, vous regardez ce que contiennent les variables.
Le but là était de définir la zone de recherche envoyé à PixelSearch dans le but de vérifier si le pixel que vous voulez trouver s'y trouve bien.

Mais je viens de voir que vous avez mis 10 en shade variation de PixelSearch, cela veut dire que PixelSearch ne va pas chercher exactement 0x8c0000 mais une couleur qui s'en rapproche (plus le shadevariation est élevé, plus la couleur peut s'éloigner de la couleur d'origine)
Si la couleur cherchée est 0x8c0000 et qu'il n'y a pas de raison qu'elle fluctue, alors mettez shadevariation à 0 et non 10, cela devrait corriger votre problème.