【机器学习实战】制作五子棋AI之一:图片预处理(尺寸变换和增加alpha通道)
2017-08-14 18:15
721 查看
当学习了一定的机器学习的算法和编程技巧之后,就应该做一些小的项目来帮助自己巩固和进一步掌握学到的知识,在这个项目里将通过一些不同的机器学学习算法来实现一个五子棋AI。
除了机器学习的某些知识以外,还需要掌握一些python的基础知识和pygame模块的使用方法,分别推荐一个学习资源:
廖雪峰老师的Python教程
目光博客Pygame
当然也可以跟着本教程一起学习。
好了,废话就这么多,下面进入正题,开始设计我们的五子棋AI
要设计一个五子棋AI,必须要有UI界面,有了UI界面才能完成展示和与用户交互的目的。一个五子棋的UI界面需要哪些元素呢?
- 背景图片
- 棋盘
- 黑白棋子
- 其他元素
下面是我从网上找的背景图片、棋盘和棋子图片,均为jpg格式
经过观察发现背景图片过小,棋子过大,都需要调整到合适大小,因为是很简单的任务,使用PIL模块就足够了,不需要OpenCV了
这样就可以把背景图片调整为1024∗768了,使用同样的方法将棋盘调整为540∗540像素,棋子调整为32∗32像素。
大小调整完成以后,又遇到一个新的问题,棋子图片为jpg格式,色深为24位,只有RGB三个通道,没有alpha透明度通道,我们就没办法提取出边缘不规则的图像,使用棋子图片的时候棋子外面的无用白色部分无法去掉,所以我们要为图片增加一个alpha通道,将外面的白色部分透明化。
得到如下的图片:
这样,五子棋UI需要的一些基本元素的图片我们都做好了。
除了机器学习的某些知识以外,还需要掌握一些python的基础知识和pygame模块的使用方法,分别推荐一个学习资源:
廖雪峰老师的Python教程
目光博客Pygame
当然也可以跟着本教程一起学习。
好了,废话就这么多,下面进入正题,开始设计我们的五子棋AI
要设计一个五子棋AI,必须要有UI界面,有了UI界面才能完成展示和与用户交互的目的。一个五子棋的UI界面需要哪些元素呢?
- 背景图片
- 棋盘
- 黑白棋子
- 其他元素
下面是我从网上找的背景图片、棋盘和棋子图片,均为jpg格式
经过观察发现背景图片过小,棋子过大,都需要调整到合适大小,因为是很简单的任务,使用PIL模块就足够了,不需要OpenCV了
from PIL import Image # 图片存储路径 imagePath = 'xxx' im = Image.open(imagePath+'b1.jpg') # Resize图片大小,入口参数为一个tuple,为新的图片大小 imBackground = im.resize((1024,768)) imBackground.save(imagePath+'background.jpg','JPEG')
这样就可以把背景图片调整为1024∗768了,使用同样的方法将棋盘调整为540∗540像素,棋子调整为32∗32像素。
大小调整完成以后,又遇到一个新的问题,棋子图片为jpg格式,色深为24位,只有RGB三个通道,没有alpha透明度通道,我们就没办法提取出边缘不规则的图像,使用棋子图片的时候棋子外面的无用白色部分无法去掉,所以我们要为图片增加一个alpha通道,将外面的白色部分透明化。
from PIL import Image import numpy as np im = Image.open(imagePath+'wp.jpg') # 将图片转换为四通道 new_im = im.convert('RGBA') # 得到图片的宽和高 w,h = new_im.size # 将图片转化为np的array形式 data = np.reshape(new_im,(h,w,4)) new_data = data.copy() for x in range(h): < 4000 span class="hljs-keyword">for y in range(w): # 将白色无用部分设置为透明,其他部分不透明 if new_data[x,y,0:3].sum() == 255*3 : new_data[x,y,3] = 0 else: new_data[x,y,3] = 255 # 将矩阵数据转换为图片并保存 new_im = Image.fromarray(new_data) new_im.save(imagePath+'whitepiece.png','PNG')
得到如下的图片:
这样,五子棋UI需要的一些基本元素的图片我们都做好了。
相关文章推荐
- 【机器学习实战】制作五子棋AI之三:基本规则的建立【1】
- 【机器学习实战】制作五子棋AI之四:基本规则的建立【2】
- 【机器学习实战】制作五子棋AI之二:界面组合与棋子放置(pygame)
- 前景图片alpha通道值的设置
- 55-002-1 HTML5图片列表页面的制作 鼠标移动图片动态显示,文字动态阴影效果,渐变效果 列表前增加样式序列号
- 关于Opengl中将24位BMP图片添加一个alpha通道并实现透明的问题
- rxjava2代码实战4--interval,take操作符clipdrawable制作图片进度条
- 使用IconWorkshop制作带alpha通道的位图
- 关于Opengl中将24位BMP图片加入�一个alpha通道并实现透明的问题
- QT五子棋项目详解之五:AI人机对战Alpha-Beta剪枝算法
- Photoshop批处理快速制作同尺寸图片
- Ubuntu下录制和制作Gif图片--实战版
- 具有Alpha通道的图片合并
- Unity工程里图片的RGB和Alpha通道的分离
- 移除Unity工程里所有图片的Alpha通道
- Joomla!扩展制作实例教程-模板展示组件-增加后台上传图片功能 【转】
- 关于CImage 不能正确显示带ALPHA通道的 32BPP 图片
- 图片不能包含alpha通道或透明度问题解决方法
- 图片不能包含alpha通道或透明度问题解决方法
- [原]BMP位图 转换 透明 TGA图像 - 增加 alpha通道 -TGA文件格式初解