Python 获取制定窗口制定位置进行截图,并且进行文字识别,然后传到服务器。(UE4构建进度百分比读取识别)

如何把UE4的构建进度读取出来,并且转化成文字传送到后台,最后在移动端可以远程看到构建进度。苦于源代码难以看懂,随之想起用Python来获得图片然后文字识别,搞起来还真挺方便。

文字识别用到百度AI开放平台的文字识别,这个直接去百度AI开放平台搞一个就好。

首先安装好几个库 , 安装好就过

pip install baidu-aip

pip install pillow

pip install pywin32

pip install opencv-python

pip install requests

 

首先 我要识别的图片是

中间的数字,所以要先获得这个窗口的句柄,通过句柄截取图片再裁剪到红框区域的数字。然后利用百度文字识别API识别图片的文字,最后传到服务器就好。

import time
import sys
from PIL import Image,ImageGrab
import win32gui, win32ui, win32con, win32api
import cv2
from aip import AipOcr
import requests


def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
    return fp.read()

def window_capture(filename):
  APP_ID = '17631737'
  API_KEY = 'cc8jeVA4ZETtE3ExfmIt8cQc'
  SECRET_KEY = '7hszbKfPbzSbo3p0CDHSryhEuiuBuCSd'

  client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

  hwnd_title = dict()

  def get_all_hwnd(hwnd, mouse):
    if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
      hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})

  win32gui.EnumWindows(get_all_hwnd, 0)
  for h, t in hwnd_title.items():
    if t is not "":
      #print(h, t)
      if t[0:5] == 'Swarm':
        swarmhwnd = h

  hwnd = swarmhwnd


  hwndDC = win32gui.GetWindowDC(hwnd)


  mfcDC = win32ui.CreateDCFromHandle(hwndDC)


  saveDC = mfcDC.CreateCompatibleDC()


  saveBitMap = win32ui.CreateBitmap()


  MoniterDev = win32api.EnumDisplayMonitors(None, None)

  w = 700
  h = 700


  saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)

  saveDC.SelectObject(saveBitMap)

  saveDC.BitBlt((0, -0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)
  saveBitMap.SaveBitmapFile(saveDC, filename)
  img = cv2.imread(filename)
  cropped = img[660:675, 350:420]
  buildnumimg = cv2.imwrite(filename, cropped)
  #print(img.shape)
  image = get_file_content(filename)
  try:
    txt = client.basicGeneral(image)
    print(txt)
    # txt = {'log_id': 6860218036175013532, 'words_result_num': 1, 'words_result': [{'words': '84.08%'}]}
    words_result = txt['words_result']
    print(words_result)
    words_result = words_result[0]
    words = words_result['words']
    print(words)

    file = open('b.txt', 'w')
    file.write(words)




  except:
    print("nonum")
#for i in range(10):

window_capture("haha.jpg")

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值