PixelSearch problème de comptabilité

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Tekky
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 15 juin 2019 15:56
Status : Hors ligne

PixelSearch problème de comptabilité

#1

Message 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
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: PixelSearch problème de comptabilité

#2

Message 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).
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Tekky
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 15 juin 2019 15:56
Status : Hors ligne

Re: PixelSearch problème de comptabilité

#3

Message 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
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: PixelSearch problème de comptabilité

#4

Message 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
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Tekky
Niveau 1
Niveau 1
Messages : 7
Enregistré le : sam. 15 juin 2019 15:56
Status : Hors ligne

Re: PixelSearch problème de comptabilité

#5

Message 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é...
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: PixelSearch problème de comptabilité

#6

Message 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.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre