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

来源:互联网 发布:php 敏感词过滤 编辑:程序博客网 时间:2024/04/30 05:27

当学习了一定的机器学习的算法和编程技巧之后,就应该做一些小的项目来帮助自己巩固和进一步掌握学到的知识,在这个项目里将通过一些不同的机器学学习算法来实现一个五子棋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')

这样就可以把背景图片调整为1024768了,使用同样的方法将棋盘调整为540540像素,棋子调整为3232像素。

大小调整完成以后,又遇到一个新的问题,棋子图片为jpg格式,色深为24位,只有RGB三个通道,没有alpha透明度通道,我们就没办法提取出边缘不规则的图像,使用棋子图片的时候棋子外面的无用白色部分无法去掉,所以我们要为图片增加一个alpha通道,将外面的白色部分透明化。

from PIL import Imageimport numpy as npim = 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):    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需要的一些基本元素的图片我们都做好了。

阅读全文
0 0
原创粉丝点击