python实现游戏同步翻译字幕

  • 前言
    • 思路
    • 代码
    • 部署方式
    • 待改进

前言

为了愉快地学英语(玩galgame),用Python实现了实时CLANNAD中文字幕。
按下快捷键时会弹出半透明的中文翻译

思路

  1. 使用pykeyboard循环捕捉按键事件
  2. 使用PIL的ImageGrab截取需要翻译部分的图片
  3. 调用pytesseract进行ocr识别
  4. 调用百度的api翻译
  5. 使用wxPython的GUI显示到屏幕上

代码

import keyboard
import wx
from PIL import ImageGrab
import win32api
import http.client
import hashlib
import urllib
import random
import json
from pip._vendor.distlib.compat import raw_input
from PIL import Image
import pytesseract
wide=win32api.EnumDisplayMonitors(None, None)[0][2][2]
high=win32api.EnumDisplayMonitors(None, None)[0][2][3]
app=wx.App()
def show_win(text='default',x=0,y=0,high=1000,weight=300):'''text:要显示的内容x:显示框左上角的x坐标y:显示框左上角的y坐标high:显示框的高度weight:显示框的宽度'''global appwin = wx.Frame(None,title="翻译",pos=(x,y),size=(weight,high),style=wx.STAY_ON_TOP)#窗口属性win.SetTransparent(100)#透明度win.Show()font1 = wx.Font(50, wx.MODERN, wx.NORMAL, wx.NORMAL, False, '黑体')#字体大小等设置richText = wx.TextCtrl(win,value='',pos=(0,0),size=(weight,high))#文本框属性richText.SetInsertionPoint(0)richText.SetFont(font1)richText.AppendText(text)wx.FutureCall(20000, win.Destroy)#关闭时间20sapp.MainLoop()
def translate(content):'''参数:content: 翻译的内容返回翻译结果'''appid = '你的appID'secretKey = '你的secretKey 'httpClient = Nonemyurl = '/api/trans/vip/translate'q = contentfromLang = 'en' # 源语言toLang = 'zh'   # 翻译后的语言salt = random.randint(32768, 65536)sign = appid + q + str(salt) + secretKeysign = hashlib.md5(sign.encode()).hexdigest()myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + signhttpClient = http.client.HTTPConnection('api.fanyi.baidu.com')httpClient.request('GET', myurl)# response是HTTPResponse对象response = httpClient.getresponse()jsonResponse = response.read().decode("utf-8")# 获得返回的结果,结果为json格式js = json.loads(jsonResponse)  # 将json格式的结果转换字典结构dst = str(js["trans_result"][0]["dst"])  # 取得翻译后的文本结果return dst
def 监控():while True:#循环监听按键if keyboard.is_pressed('w'):ImageGrab.grab((int(wide*0.1),int(high*0.8),int(wide*0.9),int(high*0.95))).save('now.png')text = pytesseract.image_to_string(Image.open(r'now.png'))text=str(translate(text))show_win(text=text,x=int(wide*0.1),y=int(high*0.7),high=150,weight=2000)elif keyboard.is_pressed('q'):print('Quit!')break
if __name__=='__main__':监控()

部署方式

  • 安装python以及所需要的包
  • 安装tesseract
  • 根据程序的注释设置相关的参数
  • 直接运行

待改进

  • 程序移植优化,可以快速选定英文的位置和中文要出现的位置
  • 翻译自动出现

python实现游戏同步翻译字幕相关推荐

  1. python自动翻译视频字幕_python利用google翻译字幕文件方法代码示例

    本篇文章小编给大家分享一下python利用google翻译字幕文件方法代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 首先加载模块 pip u ...

  2. python部落翻译_python利用google翻译 翻译字幕文件

    python使用谷歌翻译api 翻译字幕文件 英文字幕确实让人头疼,因此,花了一天专门研究,用python实现了比较简单的翻译代码.仅有几十行 首先加载模块 pip uninstall googlet ...

  3. python google翻译,python利用google翻译方法实例(翻译字幕文件)

    英文字幕确实让人头疼,因此,花了一天专门研究,用python实现了比较简单的翻译代码.仅有几十行 首先加载模块 pip uninstall googletrans git clone https:// ...

  4. python文件下载战_在您的Python平台游戏中放一些战利品

    python文件下载战 这是正在进行的有关使用Pygame模块在Python 3中创建视频游戏的系列的一部分. 以前的文章是: 通过构建一个简单的骰子游戏,学习如何用Python编程 使用Pygame ...

  5. 使用 Python 进行游戏脚本编程

    使用 Python 进行游戏脚本编程 作者 Bruce Dawson Humongous 娱乐公司 http://www.cygnus-software.com/papers/ 介绍 使用脚本语言可以 ...

  6. python五子棋游戏说明_python实现五子棋游戏(pygame版)

    python实现五子棋游戏(pygame版) 发布时间:2020-10-11 17:05:18 来源:脚本之家 阅读:67 作者:king0964 本文实例为大家分享了python五子棋游戏的具体代码 ...

  7. python五子棋游戏控制台版_python实现五子棋游戏(pygame版)

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...

  8. Python开发游戏?也太好用了吧

    程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 当然可以啦! 现在日常能够用到和想到的场景,绝大多数都可以用Python实现. 效果怎么样暂 ...

  9. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...

    原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...

  10. python编程小游戏-python编程游戏有哪些

    python编程游戏有哪些?下面给大家介绍几款由Python开发的游戏: 1.Github上面有个项目Free Python Games,里面集合了不少的Python开发的小游戏,能玩,也适合新手用来 ...

最新文章

  1. java打印四行等腰三角形_(c语言程序案例.doc
  2. Latex 添加多张图片技巧说明
  3. 《精通J2EE网络编程》中讲的JNDI 6.2 使用JNDI
  4. Bzoj1018 [SHOI2008]堵塞的交通traffic
  5. gwt的mvp模式_GWT MVP变得简单
  6. linux每隔多久调度y,Linux 进程调度+Linux系统一般执行过程 笔记
  7. Hashtable Dictionary[必看]
  8. 深度学习实战 | 使用Kera预测人物年龄
  9. node 连接mongodb
  10. Windows10上安装Keras 和 TensorFlow-GPU
  11. 字节跳动产品经理面经——飞书
  12. 测试回归结果分析软件,“3414”试验数据分析软件设计原理
  13. 尚硅谷ssm整合实战项目笔记
  14. 微会动微营销引擎:SEM效果提升的2大方向+5种能力+7个策略
  15. java中 字符串的补位
  16. 计科四班助教二月底至五月中旬点评与反馈
  17. 什么是一套完全私有的即时通讯系统
  18. 小程序 选择地区(地区选择器)
  19. 休闲平台,何去何从?(1)
  20. 树莓派远程连接工具VNC使用教程

热门文章

  1. 读《Redis入门指南》2
  2. LTspice基础教程-004.系统自带仿真库介绍
  3. MATLAB热障涂层成像,考虑孔隙细观特征的热障涂层脱粘缺陷超声检测数值模拟
  4. 完成端口(CompletionPort)详解
  5. tampermonkey 下载
  6. Eviews实现var模型
  7. 九联UNT401H零配置、芒果、南传、百视通等版本通刷固件及教程
  8. 渗透工具TotalPass:TotalPass 是一款默认口令/弱口令扫描工具
  9. python 过采样算法_欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响?...
  10. 《数字信号处理》——(一).DTFT、DFT(python实现)