我已经开始用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, "images1.png", "images2.png", "images3.png", "images4.png", "images5.png", "images6.png", "images7.png", "images8.png", "images9.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/