提高pyautogui.press速度

时间:2019-08-05 15:44:38

标签: python ocr cv2 pyautogui

我正在从10fastfingers.com编写机器人自动打字。可以。

我使用pytesseract库在pyautogui之后找到文本以按键。 我认为pyautogui.press不太快。

我正在找到pyautoguide.press之类的东西,但是速度很快。 像这个视频一样:https://vimeo.com/352072921

from PIL import Image
import pyautogui
import time
import cv2
import pytesseract


class Cordinates():
    textbox = (80, 275)
    replayBtn = (800,450)
    whereitype = (250,460)
def restartGame():
    pyautogui.click(Cordinates.replayBtn)


def main():
    restartGame()
    time.sleep(0.5)
    pyautogui.click(Cordinates.whereitype)
    while True:
        pyautogui.screenshot('image.png')
        img = cv2.imread("image.png")
        crop_image = img[320:370, 80:940]
        cv2.imshow("cropped", crop_image)
        cv2.imwrite('cropped.png',crop_image)
        text = pytesseract.image_to_string(crop_image, lang='eng')
        for c in text:
            print(c)
            if c == 'enter':
                    c=' '
            pyautogui.press(c)
            if pyautogui.position() == (1, 1):
                exit()
        pyautogui.press(' ')

main()

1 个答案:

答案 0 :(得分:1)

查看脚本https://github.com/asweigart/pyautogui/blob/master/pyautogui/init.py 默认情况下,pyautogui.press使用模块中全局设置的0.1秒PAUSE

def press(keys, presses=1, interval=0.0, pause=None, logScreenshot=None, _pause=True):
    """Performs a keyboard key press down, followed by a release.
    ...
    ...
    _autoPause(pause, _pause)

_autoPause:

def _autoPause(pause, _pause):
    """If `pause` is not `None`, then sleep for `pause` seconds.
    If `_pause` is `True`, then sleep for `PAUSE` seconds (the global pause setting).
    This function is called at the end of all of PyAutoGUI's mouse and keyboard functions. Normally, `_pause`
    is set to `True` to add a short sleep so that the user can engage the failsafe. By default, this sleep
    is as long as `PAUSE` settings. However, this can be override by setting `pause`, in which case the sleep
    is as long as `pause` seconds.
    """
    if pause is not None:
        time.sleep(pause)
    elif _pause:
        assert isinstance(PAUSE, int) or isinstance(PAUSE, float)
        time.sleep(PAUSE)

PAUSE

PAUSE = 0.1 # The number of seconds to pause after EVERY public function call. Useful for debugging.

如您所见,press中的暂停是否为None(默认情况下,它会恢复为0.1秒的PAUSE)。

您可以通过设置较低的暂停率来覆盖它。 pyautogui.press(c, pause = 0.05)