Как повысить скорость приема изображения с экрана OpenCV?

Рейтинг: 1Ответов: 0Опубликовано: 27.02.2023

У меня есть код, который в постоянном режиме просматривает области на экране и выполняет определенные действия. Но это происходит относительно долго. Каким образом можно повысить скорость работы кода.

while True:
    screenshot = ImageGrab.grab()

    frame = np.array(screenshot)

    edges = cv2.Canny(frame, 300, 200)
    
    # Дальше функция проверяет определенные области экрана
    if not check_for_edges(edges[361:371, 1071:1084], 1369, 387):
        break

    if not check_for_edges(edges[541:551, 1071:1084], 1369, 470):
        break

    if not check_for_edges(edges[721:731, 1071:1084], 1369, 551):
        break

    if not check_for_edges(edges[901:911, 1074:1086], 1369, 632):
        break

    if not check_for_edges(edges[1081:1091, 1071:1084], 1369, 713):
        break

    if not check_for_edges(edges[1261:1271, 1164:1176], 1369, 794):
        break

    if not check_for_edges(edges[1441:1451, 1164:1176], 1369, 875):
        break

Функция check_for_edges:

def check_for_edges(edges, x, y):
    if cv2.countNonZero(edges) > 0:
        pyautogui.click(x, y)
        pyautogui.click(buy_x, buy_y)
        cntn = input()
        if cntn not in ["y", "н"]:
            return False
    return True

Ответы

Ответов пока нет.