计算机视觉大作业

  • 格式:docx
  • 大小:3.30 MB
  • 文档页数:20

下载文档原格式

  / 31
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于OpenCV的切水果外挂设计

第一章引言

1.1 背景

在计算机视觉课程的前几课中,听覃老师说,曾经有个学长自己动手做了一个游戏的外挂,获得了很大的成功。跟人感觉这位学长能将自己所学与个人的技能相结合,成功的做出了实际的东西,着实厉害;同时这个过程将会对于个人的学习和成长都将有积极影响和意义。

笔者在听了覃老师的介绍后,对于与计算机视觉相关的游戏外挂的设计产生了浓厚的兴趣。有考虑到笔者在外来两年内的研究方向都将图像处理或是计算机视觉,且近期笔者正在使用QT+OpenCV+OpenGL进行基于嵌入式Linux的图像处理和开发。所以笔者若选择一个类似的外挂程序的编写和设计,将对个人今后的学习有着积极的意义。因此笔者在网上搜索了很多与图像处理有关网页游戏,如图1所示。笔者试玩了多种计算机视觉相关的游戏,并最终决定写一个切水果的游戏的外挂程序。

图 1 各种网页游戏图2 各类切水果的游戏

1.2 OpenCV简介

OpenCV[1]的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用,可以运

行在Linux、Windows和Mac OS操作系统上。

OpenCV库的所有代码都经过优化,计算效率很高,因为,它更专注于设计成为一种用于实时系统的开源库。OpenCV采用C语言进行优化,而且,在多核机器上面,其运行速度会更快。它的一个目标是提供友好的机器视觉接口函数,从而使得复杂的机器视觉产品可以加速面世。该库包含了横跨工业产品检测、医学图像处理、安防、用户界面、摄像头标定、三维成像、机器视觉等领域的超过500个接口函数。近年来,在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,OpenCV可谓大显身手,而这些,仅仅是其应用的冰山一角。

本文便是通过在Visual Studio 2013平台下安装OpenCV,通过编写C++程序,并调用OpenCV计算机视觉和图像处理的API,对游戏中的图像进行处理、识别,为程序的下一步操作提供基础。

1.3游戏外挂简介

游戏外挂[2],其实是一种游戏外辅助程序,他可以协助玩家自动产生游戏动作、修改游戏网络数据包以及游戏内存数据等,以实现玩家用最少的时间和金钱完成功力升级和过关斩将。

根据游戏的类型,游戏外挂可以大致分为两类:

(1)将游戏中大量繁琐和无聊的攻击动作使用外挂自动完成,以帮助玩家轻松搞定攻击对象并可以跨度增加玩家的经验值,并取得更好的成绩。

(2)由外挂程序产生的欺诈性的网络游戏封包,并将这些封包发送到网络游戏服务器,利用这些虚假的信息欺骗服务器进行游戏数值的修改,达到修改角色能力数值的目的。具体有可以分为模拟操作型、修改内存型、封包型等。

本文所编写的既是第一类游戏外挂。在切水果的游戏中,游戏玩家需要注意在页面底侧飞出来的各种水果和炸弹,在游戏的初期水果和炸弹飞出的速度较慢,玩家玩起来很轻松。伴随着游戏的进行,游戏的难度将增加,水果和炸弹的出现速度将越来越快。眼花缭乱的水果和炸弹不仅增加了游戏的难度,对于该类游戏的爱好者的视力也将有一定的损伤。

因此,本文编写的外挂的目的既是自动识别水果和炸弹,并通过编写程序模拟鼠标操作,进而自动的完成大量的繁琐的切水果的操作。

第二章开发环境搭建

笔者在开始安装OpenCV的过程[3]中,遇到了很多问题,浪费了一些时间。这里我给出一个简单的安装步骤。具体如下所示:

Step 1、下载一个较新的OpenCV安装包。注意:不要过新的OpenCV版本,笔者在开始时下载了最新的 3.0版本的OpenCV,但是该版本与 2.x版本的OpenCV有一定区别。网络上也没有相关的教程,因此浪费了些时间。笔者最终使用的是2.4.9版本的OpenCV。

Step 2、下载OpenCV后,双击运行exe,选择输出(解压)目录,我选择的是C:\opencv。然后解压缩后就完成了整个安装。

Step 3、配置OpenCV,这里是整个环境搭建的核心内容。

Step 3.1在“我的电脑”右击弹出“系统属性”对话框,选择“高级”再点击“环境变量”,然后在“系统变量”中的Path对话框中输入:“;C:\opencv\opencv\build\x64\vc12\bin”; 具体如图3所示。

图3 配置环境变量

Step 3.2 打开项目的属性页面,单击“配置属性”,然后点击“VC++目录”,然后手动的加入库文件、引用文件和包含文件。具体操作如图4所示。

图4 OpenCV 配置截图1

Step 3.3 在已经打开的项目的属性页面中,点击“链接器”,然后点击“输入”,然后手动添加附加依赖项。具体操作如图5所示。

图5 OpenCV 配置截图2

至此,整个OpenCV环境已经搭建、配置完成。但仍需说明的是,在程序运

行时,需要在工程的Debug目录下添加一些DLL文件。笔者为了方便,所以在该目录下添加了程序可能需要的OpenCV的全部DLL文件。具体如图6所示:

图6 添加DLL文件

第三章预分析与预处理

3.1 游戏选择

在确定游戏为“切水果”类型的之后,笔者试完了多个不同版本的切水果的游戏。通过试玩,笔者发现一部分游戏背景复杂,与传统的切水果游戏相差较大,需要处理内容较多,需要程序进行的控制,以及游戏策略均很复杂,这一类游戏如图7中的“切水果完美版”所示。

图7 切水果完美版图8喜洋洋切水果还有一部分游戏,游戏开发者可能是为了开发速度,或是降低玩家的难度,

不需要用鼠标滑过水果(可能是食物),只需要用鼠标左键点击食物的周围区域即可。这类游戏如图8中的“喜洋洋切水果”所示。通过试玩,笔者发现这一类游戏很容易“错切”。

还有一部分游戏,与传统的切水果游戏很接近,水果飞出速度合理,鼠标滑过水果后,屏幕出现划痕,切碎的水果自动掉落,如图9中的“简约切水果”所示。个人感觉这样的游戏,控制策略简单;需要的图像处理始终;需要识别的内容也叫简单。因此很适合笔者来写这第一个游戏外挂程序。

图9简约切水果

3.2 获取实验源图像

确定具体游戏后,笔者编写了一个简单小程序。通过简单的人机交互,即可获得目标区域的图像,通过设置定时器时间,可以每个30ms读取一次屏幕中目标区域,并将目标区域图像保存至特定目录。本文中人机交互图片如图10所示,实验中保存了500张实验图片,其中部分实验图如图11所示。

图10 人机交互图