欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題

 更新時間:2018年01月17日 09:54:27   作者:zjy105  
這篇文章主要介紹了python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近的答題贏錢很火爆,我也參與了幾次,有些題目確實很難答,但是10秒鐘的時間根本不夠百度的,所以寫了個輔助掛,這樣可以出現(xiàn)題目時自動百度,這個時間也就花掉2秒鐘,剩下的7、8秒鐘可以進行分析和作答,提升了贏錢概率。

源碼可以見我的github:點擊鏈接

原理分析下:使用adb命令,抓取手機視頻播放的界面,然后通過python的截取和ocr,獲得到題目和答案, 然后百度得到結(jié)果。這個環(huán)境怎么搭建,有需要的童鞋可以聯(lián)系我,因為使用本地的ocr所以解析不花錢,也沒有使用的限制。

github上的代碼中  

   ocr_bw.py,這個是自動根據(jù)題目去百度,然后打開瀏覽器,展示檢索結(jié)果

# -*- coding: utf-8 -*-

import pytesseract
import time
import webbrowser
import subprocess
from PIL import Image



def main():
 """
 主函數(shù)
 """
 op = yes_or_no('請確保手機打開了 ADB 并連接了電腦,'
     '然后打開西瓜視頻后再用本程序,確定開始?')
 if not op:
  print('bye')
  return
 #核心遞歸
 ocr_subject_parent()

 # for root, sub_dirs, files in os.walk('E:/臨時接收的文件/知乎答題/百萬/'):
 #  for file in files:
 #   print('發(fā)現(xiàn)圖片:' + file)
 #   img = Image.open('E:/臨時接收的文件/知乎答題/百萬/'+file)
 #   ocr_subject(img)


def yes_or_no(prompt, true_value='y', false_value='n', default=True):
 """
 檢查是否已經(jīng)為啟動程序做好了準(zhǔn)備
 """
 default_value = true_value if default else false_value
 prompt = '{} {}/{} [{}]: '.format(prompt, true_value,
          false_value, default_value)
 i = input(prompt)
 if not i:
  return default
 while True:
  if i == true_value:
   return True
  elif i == false_value:
   return False
  prompt = 'Please input {} or {}: '.format(true_value, false_value)
  i = input(prompt)


def screenImg(true_value='', default=True):
 prompt = '當(dāng)出現(xiàn)題目時,請按下回車進行識別 '
 i = input(prompt)
 if not i:
  return default
 while True:
  if i == true_value:
   return True
  else:
   return False
  i = input(prompt)


def ocr_subject(p):
 # 截取 距離上530開始 940結(jié)束
 # 截取 距離上260 570結(jié)束
 p = cut_img(p)
 pytesseract.pytesseract.tesseract_cmd = 'E:/Program Files (x86)/Tesseract-OCR/tesseract'
 subject = pytesseract.image_to_string(p, lang='chi_sim')
 subject = "".join(subject.split())
 subject = subject.split('.')[1]
 print(subject)
 openPage(subject)
 ocr_subject_parent()


def ocr_subject_parent():
 result = screenImg()
 if result:
  start = time.time()
  # screenshot.check_screenshot()
  process = subprocess.Popen(
   'adb shell screencap -p',
   shell=True, stdout=subprocess.PIPE)
  binary_screenshot = process.stdout.read()
  binary_screenshot = binary_screenshot.replace(b'\r\n', b'\n')
  f = open('autojump.png', 'wb')
  f.write(binary_screenshot)
  f.close()
  # screenshot.pull_screenshot()
  img = Image.open('autojump.png')
  print("耗時:" + str(time.time() - start))
  ocr_subject(img)


def openPage(subject):
 url = 'https://www.baidu.com/s?wd={}'.format(
  subject)
 webbrowser.open(url)
 webbrowser.get()



def cut_img(img):
 region = img.crop((70, 260, 1025, 570))
 #region.save("temp/cut_first.png")
 return region


if __name__ == '__main__':
 main()

   ocr_bw2.py,這個是根據(jù)題目+答案,去百度檢索,通過爬蟲抓取百度的收錄數(shù),然后在控制臺打印結(jié)果

__author__ = 'zjy'
# -*- coding:utf-8 -*-

import pytesseract
import time
import webbrowser
import subprocess
from PIL import Image
import urllib
import urllib.request
import threading
from urllib.parse import quote


def main():
 """
 主函數(shù)
 """
 op = yes_or_no('請確保手機打開了 ADB 并連接了電腦,'
     '然后打開西瓜視頻后再用本程序,確定開始?')
 if not op:
  print('bye')
  return
 # 核心遞歸
 ocr_subject_parent()

 # for root, sub_dirs, files in os.walk('E:/臨時接收的文件/知乎答題/百萬/'):
 #  for file in files:
 #   print('發(fā)現(xiàn)圖片:' + file)
 #   img = Image.open('E:/臨時接收的文件/知乎答題/百萬/'+file)
 #   ocr_subject(img)


def yes_or_no(prompt, true_value='y', false_value='n', default=True):
 """
 檢查是否已經(jīng)為啟動程序做好了準(zhǔn)備
 """
 default_value = true_value if default else false_value
 prompt = '{} {}/{} [{}]: '.format(prompt, true_value,
          false_value, default_value)
 i = input(prompt)
 if not i:
  return default
 while True:
  if i == true_value:
   return True
  elif i == false_value:
   return False
  prompt = 'Please input {} or {}: '.format(true_value, false_value)
  i = input(prompt)


def screenImg(true_value='', default=True):
 prompt = '當(dāng)出現(xiàn)題目時,請按下回車進行識別 \n'
 i = input(prompt)
 if not i:
  return default
 while True:
  if i == true_value:
   return True
  else:
   return False
  i = input(prompt)


def ocr_subject(p):
 # 截取 距離上530開始 940結(jié)束
 # 截取 距離上260 570結(jié)束
 subImg = cut_img(p)
 pytesseract.pytesseract.tesseract_cmd = 'E:/Program Files (x86)/Tesseract-OCR/tesseract'
 subject = pytesseract.image_to_string(subImg, lang='chi_sim')
 subject = "".join(subject.split())
 subject = subject.split('.')[1].replace("\"", "")
 print(subject)
 ocr_answer(p, subject)
 # openPage(subject)
 # print("結(jié)束:" + str(time.time()))
 ocr_subject_parent()


def getSearchNum(key):
 key = quote(key)
 # print(key)
 url = 'http://www.baidu.com/s?wd={}'.format(key)
 # print(url)
 response = urllib.request.urlopen(url)
 page = response.read().decode("utf-8")
 i = int(page.index('百度為您找到相關(guān)結(jié)果約'))
 start = i + 10
 end = i + 25
 page = page[start: end]
 return page


def ocr_answer(p, subject):
 list = cut_question(p)
 pytesseract.pytesseract.tesseract_cmd = 'E:/Program Files (x86)/Tesseract-OCR/tesseract'
 for p in list:
  t = threading.Thread(target=ocr_answer_thread, args=(p, subject))
  t.start()


def ocr_answer_thread(p, subject):
 answer = pytesseract.image_to_string(p, lang='chi_sim')
 answer = "".join(answer.split())
 v = getSearchNum(subject + ' ' + answer)
 print(answer + ' ' + v)
 # print(time.time())


def ocr_subject_parent():
 result = screenImg()
 if result:
  start = time.time()
  # print("開始:" + str(start))
  # screenshot.check_screenshot()
  process = subprocess.Popen(
   'adb shell screencap -p',
   shell=True, stdout=subprocess.PIPE)
  binary_screenshot = process.stdout.read()
  binary_screenshot = binary_screenshot.replace(b'\r\n', b'\n')
  f = open('autojump.png', 'wb')
  f.write(binary_screenshot)
  f.close()
  # screenshot.pull_screenshot()
  img = Image.open('autojump.png')
  ocr_subject(img)


def openPage(subject):
 url = 'https://www.baidu.com/s?wd={}'.format(
  subject)
 webbrowser.open(url)
 webbrowser.get()


def cut_img(img):
 region = img.crop((70, 260, 1025, 570))
 # region.save("temp/cut_first.png")
 return region


def cut_question(img):
 list = []
 question1 = img.crop((70, 590, 1025, 768))
 question2 = img.crop((70, 769, 1025, 947))
 question3 = img.crop((70, 948, 1025, 1130))
 list.append(question1)
 list.append(question2)
 list.append(question3)
 # question1.save("temp/cut_1.png")
 # question2.save("temp/cut_2.png")
 # question3.save("temp/cut_3.png")
 return list


if __name__ == '__main__':
 main()

由于很多題目是下列哪個不是,所以我更喜歡用第一個方式,基本上識別時間在0.5-0.6秒之間。

最后里面的ocr_zh.py是可以用來抓取頭腦王者的輔助。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python利用tkinter實現(xiàn)一個簡易番茄鐘的示例代碼

    Python利用tkinter實現(xiàn)一個簡易番茄鐘的示例代碼

    番茄鐘是番茄工作法使用的一個時間表,即選擇一個待完成的任務(wù),將番茄時間設(shè)為25分鐘,專注工作,中途不允許做任何與該任務(wù)無關(guān)的事,直到番茄時鐘響起,然后在紙上畫一個X短暫休息一下。本文用tkinter實現(xiàn)一個簡易番茄鐘,需要的可以參考一下
    2022-12-12
  • python 3.5下xadmin的使用及修復(fù)源碼bug

    python 3.5下xadmin的使用及修復(fù)源碼bug

    xadmin是基于Python和Django的管理框架,想要能夠熟練使用,學(xué)習(xí)Django是必須的。下面這篇文章主要給大家介紹了python 3.5下xadmin的使用和當(dāng)我們重寫了Django的User表后,Django就會出現(xiàn)bug問題的解決方法,需要的朋友可以參考下。
    2017-05-05
  • 利用Python進行金融數(shù)據(jù)分析的全過程

    利用Python進行金融數(shù)據(jù)分析的全過程

    金融數(shù)據(jù)分析在現(xiàn)代金融行業(yè)中扮演著至關(guān)重要的角色,通過使用Python編程語言,我們可以對大量金融數(shù)據(jù)進行處理、分析和可視化,從而獲得有價值的洞察,本篇文章將介紹如何使用Python進行金融數(shù)據(jù)分析,需要的朋友可以參考下
    2024-08-08
  • Django框架中間件定義與使用方法案例分析

    Django框架中間件定義與使用方法案例分析

    這篇文章主要介紹了Django框架中間件定義與使用方法,結(jié)合具體案例形式分析了Django框架中間件相關(guān)定義、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • 解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍的四種方法問題

    解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍的四種方法問題

    本文主要介紹了解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍的四種方法問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Python讀寫文件模式和文件對象方法實例詳解

    Python讀寫文件模式和文件對象方法實例詳解

    這篇文章主要介紹了Python讀寫文件模式和文件對象方法,結(jié)合實例形式詳細分析了Python文件操作常用技巧與相關(guān)注意事項,需要的朋友可以參考下
    2019-09-09
  • python3使用GUI統(tǒng)計代碼量

    python3使用GUI統(tǒng)計代碼量

    這篇文章主要為大家詳細介紹了python3使用GUI統(tǒng)計代碼量,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • python基于celery實現(xiàn)異步任務(wù)周期任務(wù)定時任務(wù)

    python基于celery實現(xiàn)異步任務(wù)周期任務(wù)定時任務(wù)

    這篇文章主要介紹了python基于celery實現(xiàn)異步任務(wù)周期任務(wù)定時任務(wù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • 詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)

    詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)

    這篇文章主要介紹了詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • Python基于pygame實現(xiàn)圖片代替鼠標(biāo)移動效果

    Python基于pygame實現(xiàn)圖片代替鼠標(biāo)移動效果

    這篇文章主要介紹了Python基于pygame實現(xiàn)圖片代替鼠標(biāo)移動效果,可實現(xiàn)將鼠標(biāo)箭頭轉(zhuǎn)換成圖形的功能,涉及pygame圖形操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論