今天给大家带来的是我大二上短学期参与的一个C++项目,当时的项目成员有我、隔壁班一同学、我一东北室友以及一个好康的转系学姐嘻嘻,这项目名字是我那逗比室友非要加的,不仅是项目名字,就连软件的名字都充满了哲♂学气息:
大一的时候也是我们几个组了C语言的团队项目,当时做的是五子棋,我们以一两百行的代码的智障AI成功完胜另外几组写了几千行的高级AI,笑死我了哈哈哈哈哈,只可惜当时的项目丢失了,不然也想着记录一下诶 。
这个项目的灵感来源是我室友衣柜上贴的《楚门的世界》的海报,就下面这个:
整张海报是以主人公人生各个阶段的照片拼接而成,海报放大后的局部是这样的:
受此启发,我们想着也弄个这样的东西玩玩(主要是当时大家都跑去做游戏去了,我们觉着没意思hhh),扯远了扯远了,正文开始:
一、开发平台及辅助工具
开发平台:Visual Studio
辅助库:OpenCV
界面开发:MFC
爬虫:PYcharm
二、软件功能
我们的预期目标如上面提到的海报所示,功能框图如下:
三、方案设计
我们将软件的工作分为4个流程:
- 元素图片处理(已在图库建设中同时完成):将元素图片剪切为统一大小的图片
- 目标图片处理:将目标图片划为多个小块,小块大小和元素图片处理后大小一样。
- 图片匹配:根据图片的平均像素值来匹配目标图片所有小区块和处理后元素图片。
- 图片拼接:根据图片匹配结果,将元素图片按序拼接,得到拼接成的目标图片。
四、方案实现
1. 元素图片处理
给出框图如下:
a. 爬虫
这里需要提到的是,因为选取待拼图对象的随机性,我们并不能做到采用一系列具有关联性的图片作为图片库,因此我们采取的是按照颜色作为关键词在百度图片中进行爬图:
keyword = [
'红色', '绿色', '黄色','鸨色','赤白橡','油色','绀桔梗','踯躅色','肌色','伽罗色','花色','桜色',
'青丹','瑠璃色','蔷薇色','灰茶','莺色','琉璃绀','韩红','茶色','利久色','绀色',