您的位置:首页 > 大数据 > 人工智能

【机器学习实战】制作五子棋AI之一:图片预处理(尺寸变换和增加alpha通道)

2017-08-14 18:15 721 查看
当学习了一定的机器学习的算法和编程技巧之后,就应该做一些小的项目来帮助自己巩固和进一步掌握学到的知识,在这个项目里将通过一些不同的机器学学习算法来实现一个五子棋AI。

除了机器学习的某些知识以外,还需要掌握一些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需要的一些基本元素的图片我们都做好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息