- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
macOS下基于图像识别自动化程序
macOS下基于图像识别自动化程序 摘要:随着macOS系统用户的逐渐增多,各类应用需求不断增加,而自动化程序的出现可以解决可以解决许多日常应用中的痛点难点,比如重复性操作、游戏外挂、自动抢票等。文章给出一种在macOS系统下自动化程序的实现框架,不同于一般的自动化程序,其特点是可以从屏幕截图自动识别信息,利用多种不同的程序语言完成不同的功能模块,最终实现一个可以自动进行扫雷游戏的程序。其中,利用python语言实现程序主框架并完成人机交互,利用C++语言高效实现核心算法策略,利用octave语言实现图像的读取与识别
关键词:图像识别;自动化程序;程序设计;macOS,python;C++;octave;深度优先搜索(DFS)
中图法分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)05-0155-05
随着macOS系统用户的逐渐增多,各类应用需求不断增加,而自动化程序的出现可以解决可以解决许多日常应用中的痛点难点,比如重复性操作、游戏外挂、自动抢票等
Python是一种强大的解释型程序设计语言,在各种库的帮助下可以便捷的实现各种强大的功能。Octave是一个类似于MATLAB的开源的科学计算及数值分析工具,擅长处理图片等矩阵型数据。C++是一种广泛使用的程序设计语言,相比于python它有更高的执行速度,许多核心算法在python上实现会遇到速度瓶颈,C++的实现则可以让速度提升一至两个数量级
笔者在macOS系统下使用python、c++、octave三种语言实现了一个扫雷游戏的自动化程序(下简称扫雷自动机),能够读取并识别屏幕图像,模拟用户的思维与操作,从而自动进行游戏。该文希望通过对这个自动化程序的分析,给其他程序初学者提供一个可行的自动化程序解决方案
1主框架流程
2重难点分析
扫雷自动机需要完成信息获取、局面决策、人机交互三个大任务。信息获取中,需要完成屏幕截图、图像读取、图像识别等子任务;局面决策需要在保证正确性的情况下尽可能多的判断出一定是或一定不是地雷的位置,提高每一次主循环的效率;人机交互方面需要在保证速度的同时考虑到游戏本身的性能,太快会让游戏本身来不及反应,甚至出现一些严重的错误
2.1信息获取
自动化程序获取信息的方式可以大致分为三种,一种是环境已提供好便于读取的信息,通过调用接口或读取文件就可以解决;一种是通过一些反编译手段从内存中获取到环境不希望我们获得的信息;还有一种从用户屏幕、音响等输出设备间接获取。这里我们通过屏幕图像间接获取信息
2.1.1屏幕截图
在macOS下,屏幕截图可以由macOS系统自带的命令screencapture’完成,此命令可以将图片保存至指定路径或剪贴板。另外,还可以使用PIL库中的ImageGrab.grab()函数将当前屏幕图像保存至内存中,并转换成可供python使用的格式
2.1.2图像读取
根据图像数据保存的位置,可通过imread()等常规手段读取硬盘中的图像,也可以利用python的PIL库函数截屏至内存,还可以通过AppKit的NSPasteboard读取剪贴板中的图像
将图像保存至硬盘再通过常规手段读取,整体速度取决于硬盘的速度;使用PIL截屏至内存,简洁方便,但?@样便不能通过octave工具分析图像,且其速度与手动保存至硬盘再读取相似,可以合理推断其实现采用了相同的方法。通过AppKit的NSPasteboard读取剪贴板中的图像性能最佳,不过需要swift或Objective-C的支持,以及转换到python所支持的格式
2.1.3图像识别
在扫雷自动机中,图像识别的任务是获取扫雷地图上每一个方格的状态。而在其他应用中,可以是识别验证码、锁定人物位置等功能
识别每一个方格的状态,首先需要确定每一个方格在图像中的相对位置。笔者的方法是先找到游戏界面的左上角,再根据每一个方块与游戏界面的左上角的相对位置计算每一个方块在整个图像中的绝对位置。寻找游戏界面左上角的方法可以很灵活,笔者直接枚举一个小区域中的所有像素点,当与标准左上角区域吻合时,就是左上角的位置
整个决策算法包含两种方法,优先循环使用第一种方法,无法更新地图后使用第二种方法,循环这个过程,直到地图经过两种方法都无法更新
2.3 人机交互
人机交互部分可以由python的第三方库完成,笔者选择使用PyUserInput库,可以实现模拟用户鼠标点击事件。点击位置由之前确定的各个方格的位置以及局面决策结果确定,由于本次采用H5扫雷进行测试,性能不足,两次点击之间需要有一定的时间间隔,否则游戏本身无法正常响应
3 程序实现
整个扫雷自动机由三部分组成,首先是
您可能关注的文档
最近下载
- 医学影像学模拟考试题与答案.docx
- 2021OceanStor Dorado 6000, Dorado 18000系列产品白皮书.docx VIP
- 华为OceanStor18000系列案例集.pptx VIP
- 医学影像学试题(附参考答案).docx
- oceanstor 18000系列高端存储系统可靠性技术白皮书.pdf VIP
- 部编人教版五年级上册语文全册表格教案(新审定).pdf VIP
- 2024年新生儿窒息复苏(新版指南).pptx VIP
- 华为OceanStor18000系列高端存储.PDF VIP
- oceanstor18000系列存储系统产品介绍.pptx VIP
- 华为OceanStor 融合存储最佳实践.pdf VIP
文档评论(0)