Pyautogui如何自动随机截图

how to take a screnshot by Pyautogui automatically and randomly

objective 我想从图像中提取文本。 我玩一个图标随机出现的游戏,右边的图标附近有一个文本(文本作为图像)。 我希望脚本只截取文本区域的屏幕截图。 所以,每次他定位屏幕时我都想要脚本,我要他截取文本的屏幕截图。 这是一张理解这个想法的图片: enter image description here

这是我的代码:

import pyautogui as py
import time
from PIL import Image
from pytesseract import *

pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

while 1:
        indice1 = py.locateOnScreen("icon.png")
    
    if indice1:
        
        print("indice see it ")

        myScreenshot = py.screenshot()
        myScreenshot.save(r'C:\Users\rachidel07\Desktop\ok\venv\image.png')

        img=Image.open("image.png")
        output = pytesseract.image_to_string(img)
        print(output)

    else:
            print ("non")
        


如果你只想要文本,检查图标,当它找到它时,用相对于图标的坐标拍摄整个盒子的照片(你很容易得到这个,因为 locateonscreen returns坐标,您可以测量文本框有多大并进行数学运算。)然后使用 PIL 仅裁剪文本,然后使用 tesseract 进行 ocr。

要裁剪文本,您可以使用 PIL 的 crop()。

from PIL import Image    

img = Image.open("image.png")
newimg = img.crop((100, 100, 150, 150))

newimg.save("croppedimage.png")