0
votes

Localiser la position de couleur sur l'écran Python

Je veux cliquer sur une couleur spécifique à l'écran avec Pyutogui, mais pour cela, j'ai besoin de sa position et je ne trouve aucune information utile sur le sujet. J'essaie de faire des carreaux de piano autoclicker et de cela, j'ai pensé à identifier la couleur de la tuiles et en cliquant dessus.


0 commentaires

4 Réponses :


2
votes

Vous pouvez trouver la position de couleur avec Pyutogui : xxx


0 commentaires

0
votes

envisagez de créer une capture d'écran de zone plus petite pour identifier les pixels plus rapidement.

pyautogui.screenshot(region=(0,0, 300, 400))


0 commentaires

0
votes

C'est mon premier post! :) J'ai eu le même problème, mais j'ai trouvé une solution. Mon code ne suit probablement pas de norme de programmation, mais cela fonctionne hahaha! J'ai commencé la programmation en Python il y a 2 mois (une expérience il y a 20 ans (Qbasic / C / Java), mais jamais rien de professionnel). S'il vous plaît dites-moi si vous travaillez pour vous et s'il y a quelque chose que je peux m'améliorer. J'espère que je peux aider quelqu'un avec ce post, puisque ce site m'aidait tellement au cours des 2 derniers mois!

def checkForRGBValues(start=(0,0), end=(50,50), R=255, G=255, B=255):

    x = int(end[0]-start[0] + 1)
    y = int(end[1]-start[1] + 1)
    # print(x)
    # print(y)
    for x in range(start[0], end[0] + 1, 1):
        for y in range(start[1], end[1] + 1, 1):
            print(str(x) + "/" + str(y))

            if pyautogui.pixel(x, y)[0] == R and pyautogui.pixel(x, y)[1] == G and pyautogui.pixel(x, y)[2] == B:
                print("Color found")
                with open("color_found.txt", "a") as file_found:
                    file_found.write(str(x) + "/" + str(y))
                    file_found.write("\n")
            else:

                with open("color_not_found.txt", "a") as file:
                    file.write(str(x) + "/" + str(y))
                    file.write("\n")

            y = y + 1
        x = x + 1



checkForRGBValues((150,200), (200,250), R=255, G=0, B=0) #if nothing (0,0), (50,50)


1 commentaires

Je viens de remarquer que 2 lignes ne sont pas à l'intérieur de la partie de code, je suis désolé pour ça!



0
votes

Voici une autre version qui compte le nombre de pixels dans la région:

import pyautogui

def checkForRGBValues(start=(0,0), end=(50,50), R=255, G=255, B=255): #start/end/r/g/b value, I put some standard values for testing

    x = int(end[0]-start[0] + 1) #calculates x value between start and end
    y = int(end[1]-start[1] + 1)  #calculates y value between start and end
    how_many_pixels_found = 0 #nothing found yet 
    for x in range(start[0], end[0] + 1, 1): #loops through x value
        for y in range(start[1], end[1] + 1, 1): #loops through y value
            if pyautogui.pixel(x, y)[0] == R and pyautogui.pixel(x, y)[1] == G and pyautogui.pixel(x, y)[2] == B: #checks if the wanted RGB value is in the region
                how_many_pixels_found = how_many_pixels_found + 1 #adds one to the result

            y = y + 1
        x = x + 1
    return how_many_pixels_found #returns the total value of pixels with the wanted color in the region.

x = checkForRGBValues((150,200), (200,250), R=60, G=63, B=65)
print(x)


2 commentaires

S'il vous plaît expliquer ce que votre code fait et comment cela le fait.


Je suis désolé! Je viens d'ajouter les commentaires! J'aurais dû y avoir pensé avant de poster :-)