1. 程式人生 > >看我如何用python來玩百萬英雄

看我如何用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. 結果
這裡寫圖片描述
歡迎關注微信公眾號“翰墨知道”獲取全部程式碼。
這裡寫圖片描述