我已经开始用Python制作一个机器人。该机器人的目标是从屏幕上读取简单的一位数字,然后将它们加在一起。目前,我知道如何获取屏幕截图。我被困在图像识别上。我已经研究过OpenCV模板匹配。

数天来,我一直在努力寻求解决方法。
我唯一能够编写的代码位于问题的底部。

例如,我想做的是:
(为了)

  • 它将抓取屏幕截图
  • 它将通过将我的数字图像与屏幕截图
  • 进行比较
  • 找到匹配的图像后,它将记录一个值到变量。
  • 然后它将移至下一个数字。
  • 它将重复步骤1-3
  • 它将与加在一起。

  • 目前,我的代码如下所示:
    import sys
    import cv2
    import numpy
    from cv2 import cv
    import PIL
    from PIL import ImageGrab
    
    print("Authentication")
    print("Enter Password:")
    entered = raw_input()
    if entered == "hello":
        print("************Menu************")
        print("1: Quit")
        print("2: Start Bot")
        print("3: Settings")
        print("*" * 28)
        mode = input("")
        if mode == 1:
            print("Closing Answer Quick")
            import time
            time.sleep(3)
            quit
        elif mode == 2:
            import time
            print("Bot Initialize")
            time.sleep(1)
            print("Getting Screen")
            time.sleep(3)
    
            screenimage = ImageGrab.grab()
            x = [1, "images\1.png", "images\2.png", "images\3.png", "images\4.png", "images\5.png", "images\6.png", "images\7.png", "images\8.png", "images\9.png"]
        ##Here is where the screen recognition code goes
    
        elif mode == 3:
            print("Settings")
        else:
    
            import time
            print("Incorrect Password")
            time.sleep(3)
            quit
    

    最佳答案

    如果您不只是出于学术目的使用OpenCV,我建议使用OCR作为解决号码识别任务的更简单方法。这是一个基于Tesseract的python库,由Google维护,它是一种领先的OCR技术。它还具有仅数字检测设置。

    http://code.google.com/p/pytesser/

    关于python - 确定屏幕截图中是否包含较小的图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14572497/

    10-16 06:24