看我如何用python来玩百万英雄

最近答题游戏可谓火爆至极,一时间刷爆了朋友圈,在感叹自己已经跟不上互联网思维,为各位金主大大疯狂“撒币”行为所震惊、振奋的同时,也在想怎么用时下热门的人工智能技术来辅助我们的答题呢,本文将讲述我是如何用python来辅助玩百万英雄的,至于冲顶大会啊,芝士超人啊,等等等啊也都不在话下。
1. 思路
在答题之初就想过用搜索的方式,奈何只有10秒钟答题时间,手速跟不上题速啊!
那么尝试用siri来搜索呢,这跟主持人的口音,语音片段的截取等又有很大的关系,效果也不理想。
之后受跳一跳辅助工具的启发,就想到使用中文识别的方式,将手机屏幕投到电脑,再把电脑截屏,然后识别文字,将识别结果用于百度搜索,然后根据搜索结果辅助答题,经过尝试,这种方法还是很有效果的,下面就手把手教大家如何用python来玩百万英雄。
2. 实施
1. 手机投屏,主要是用电脑端的各种手机助手,相信玩过安卓的朋友们应该不会陌生,这里推荐使用360手机助手。
2. 屏幕截图,把手机屏投到桌面不是目的,把手机屏截图,进而识别图中的文字才是关键。手机截屏使用了python调用pypiwin32库的API接口实现。
2.1,安装python,实验中使用了python 3.6版本,在安装时建议使用自定义模式,选择安装pip和配置PATH,这样省去很多其他麻烦。
2.2,使用pip install pypiwin32安装pywin32库,而后使用如下代码截图:

def window_capture(filename):
    hwnd = 0 
    hwndDC = win32gui.GetWindowDC(hwnd)
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    saveDC = mfcDC.CreateCompatibleDC()
    saveBitMap = win32ui.CreateBitmap()
    MoniterDev = win32api.EnumDisplayMonitors(None,None) 
    #w = MoniterDev[0][2][2] 
    #h = MoniterDev[0][2][3]
    w = 450
    h = 190
    saveBitMap.CreateCompatibleBitmap(mfcDC,w,h)
    saveDC.SelectObject(saveBitMap)
    #saveDC.BitBlt((0,0),(w,h),mfcDC,(0,0),win32con.SRCCOPY)
    saveDC.BitBlt((0,0),(w,h),mfcDC,(30,170),win32con.SRCCOPY)
    saveBitMap.SaveBitmapFile(saveDC,filename)

代码参见:https://www.cnblogs.com/weidiao/p/8051280.html
具体实施的时候,先使用被注释掉的#w,#h,#saveDC代码,将全屏截图,而后将其放入画图打开,通过选择框,先确定截取的左上角的位置,设定在上述代码(30,170)位置,之后将题目完全框住,框的宽和高就是w和h的参数。
3,将上述截图进行识别获取中文内容,识别主要使用tesseract-OCR,实验中使用的是4.00版本,安装时有一个选框可以选择安装中文简体的识别,如果安装时未选定,那就之后下载一个简体中文文件,放到对应目录。安装完后注意添加环境变量,使用pip安装Pillow和pytesseract这部分主要参考了:https://www.cnblogs.com/jianqingwang/p/6978724.htmlhttp://blog.csdn.net/a349458532/article/details/51490291
4,将识别结果用于搜索:使用webbrowser,使用pip install webbrowser安装,参考https://www.cnblogs.com/qiezizi/p/6023805.html
5,此外针对不同的题目类型还设置了两种模式,模式1搜索题目,模式2搜索选项
3. 结果
这里写图片描述
欢迎关注微信公众号“翰墨知道”获取全部代码。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zombee0/article/details/79053601