Живое обновление OpenCV для чисел на экране - PullRequest
0 голосов
/ 16 февраля 2020

В настоящее время я изучаю возможности OpenCV, я пытаюсь делать живые обновления со своего экрана, я пытаюсь передать данные в CNN. Я использую OpenCV для подачи массива градаций серого в сверточные слои. В любом случае. есть несколько чисел экрана, которые остаются в том же месте, которое я хочу захватить. Я хочу, чтобы OpenCV захватил 2 точки на экране, где цифры обновляются, и обработал изображение в число, которое я могу дать CNN. Я нашел координаты на экране в терминах координат пикселей в верхнем левом и правом углу и нижнем левом и правом углу. Мне нужно использовать весь экран (я пытаюсь создать программу для игры) для ввода в игру, но я хочу получить цифры на экране для обратной связи с сетью, пытаясь использовать неконтролируемое Q-обучение. Как бы мне go получить два числа на экране и превратить их в числа с плавающей точкой, которые я мог бы подать в сеть, на экране много цифр, мне нужны только два, и они никогда не меняются местами, Могу ли я запечатлеть два положения экрана и превратить изображение в текст? Мне бы понадобилось 3 записи в любой момент времени, хотя и правильно, по одной для каждого числа, чтобы получить число для сети, и одну для всего экрана для сверточного слоя? это возможно? как я могу написать это? Любые предложения будут ценны. Вот то, что я имею до сих пор.

import numpy as np
from PIL import ImageGrab
import cv2
import time


while True:
    def process_img(original_image):
        processed_img = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)
        return processed_img

    def process_img2(original_image):
        processed_img = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)
        return processed_img



    def main():
        for i in range(25):
            screen = np.array(ImageGrab.grab(bbox=(20, 150, 950, 950)))
            new_screen = process_img(screen)
            #last_time = time.time() 
            cv2.imshow('window', new_screen)
            if cv2.waitKey(25) & 0xFF == ord('q'):
                cv2.destroyAllWindows()
                break

    main()

Это возвращает левую сторону моего экрана как массив градаций серого (я думаю), там есть 2 числа в части экрана, которая обновляется каждую секунду. Буду ли я делать несколько снимков экрана или как лучше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...