Python: Почему печатается изображение, а не пиксели - PullRequest
0 голосов
/ 20 июня 2020

Я нашел руководство, в котором показано, что я пытаюсь сделать, я пытаюсь немного изменить его для своих нужд. Я делаю скриншот размером 26 пикселей. Если любой из этих пикселей [R] в RGB go больше 100, я хочу щелкнуть по экрану.

Когда я делаю снимок экрана из 26 пикселей, я получаю следующее:

ScreenShot pos=2134,1228 size=1x27 and print(img.pixels) give me this: (86, 126, 162)

Хорошо, кажется, я на правильном пути!

Я использую этот код для проверки:

def start():
    with mss() as sct:
        img = sct.grab(bbox)
        for coord in coordX:
            print(img)

сейчас, когда я go проверяю пиксели:

def start():
    with mss() as sct:
        img = sct.grab(bbox)
        for coord in coordX:
            print(img.pixels)

мы печатаем все 26 пикселей, у нас все хорошо!

Теперь я заставляю функцию щелкать по экрану:

def start():
    with mss() as sct:
        img = sct.grab(bbox)
        for coord in coordX:
            if img.pixel(coord, 0)[0] > 100:
                pyautogui.click(2135, 1240)
                break

Это не работает, когда я использую> 100 Вы можете видеть, что в распечатке указано, что R составляет 86 на первом пикселе, так что это должно работать. Когда я меняю его на менее 100, он щелкает каждый раз.

Полный код:

import pyautogui
import time
import keyboard
from mss import mss
pyautogui.PAUSE = 0
pyautogui.FAILSAFE = True

bbox = (2134, 1228, 2135, 1255)
coordX = [0]

def start():
    with mss() as sct:
        img = sct.grab(bbox)
        for coord in coordX:
            if img.pixel(coord, 0)[0] > 100:
                pyautogui.click(2135, 1240)
                break


time.sleep(1)
start()

Есть идеи, что я делаю неправильно? Спасибо за любую помощь!

...