Снимок экрана рабочего стола, захват слов, получить координаты слов и нажать на них - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу сделать скриншот своего рабочего стола, интерпретировать символы на рабочем столе, сгруппировать слова, а затем получить координаты этих слов, чтобы я мог щелкнуть по ним.

imageName = "images/desktop.png"
image = cv2.imread(imageName)

# Grab image data/characters
d = pytesseract.image_to_data(image)
print(d)

# Transform them into words? (not working yet, getting an error on len(d['level'])
n_boxes = len(d['level'])
for i in range(n_boxes):
    (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    print(x, y, w, h)

# Use these coordinates to click certain buttons etc.
pyautogui.click(coordinates)

Возможно? И можно ли будет сделать снимок экрана только с части моего экрана, но при этом получить правильные координаты?)

Изображение моего рабочего стола создается следующим образом:

def fullScreenShot():
  # Take a full screen shot.
  with mss.mss() as sct:
    screenShot = sct.shot(output="images/desktop.png")

1 Ответ

0 голосов
/ 25 апреля 2020

Я нашел решение. Сначала создайте скриншот вашего экрана с помощью библиотеки mss, сохраните его где-нибудь доступным.

def fullScreenShot():
  with mss.mss() as sct:
    screenShot = sct.shot(output="images/desktop.png")


# Function to read your desktop image, loop through words found and generate coordinates
    def getCoordinatesOfWords():
        imageName = "images/desktop.png"
        image = cv2.imread(imageName)

        # Image Data
        d = pytesseract.image_to_data(image, output_type=Output.DICT)

        # Number of boxes
        n_boxes = len(d['level'])
        # Loop through words and get coordinates.
        for i in range(n_boxes):
            (left, top, width, height) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
            if d['text'][i] != 0 and len(d['text'][i]) != 0:
                # Create final coordinates of words, dividing by 2 because I am on a mac retina (resolution is 2x), and dividing width/height by 4, to get center of image.
                coordinatesOfWord = (left/2 + width/4, top/2 + height/4) 
...