如何把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")