基于python定位棋子位置及识别棋子颜色
这一篇主要实现定位棋子位置及识别棋子颜色。
围棋棋盘原图如下:
经过节处理,已经将棋盘位置找到,如下图:
现在根据新图,进行棋子位置的定位
1、将棋盘分割成19x19的小方格
为了定位出棋盘每个交叉点上,是否有棋子,需要将棋盘分割成19x19的小方格,由于围棋棋盘每个交叉线直接距离相同,是矩形,因此分割成小方格十分容易,如下图:
若想将棋盘分割成19x19的小方格,需要知道以下几个参数。
这些可以使用imagewathch(vs下opencv的插件)工具,方便的知道,这个工具可以实时查看图像的宽高,某个位置的像素值。这个工具的使用可以看我另外一篇文章:opencv用vs2013调试时用image watch插件查看图片,代替一堆数据,直观很多。
下面是将原图分割成19x19小方格的代码
2、根据像素占比识别是否是黑色棋子
上面三种图像是我们分割成小方格后的三种主要形态,分别代表黑色棋子,白色棋子以及无棋子。其中黑色棋子最好查找,我们将图像进行灰度化——二值化后,通过统计黑色像素占比超过一定数值,就能知道该处是否有黑色棋子。
这里我将统计黑色占比的代码,封装成了一个函数,如下;
3、根据像素占比识别是否是白色棋子
同样的,我们可以统计像素中白色占比,来进行识别该位置是否是白色棋子,但是这里需要注意一个问题,如果按照上面黑色棋子识别方法进行灰度化、二值化会造成白色棋子和无棋子分辨不了,二者都有大面积的白色,因此这里需要调整二值化的阈值,分开无棋子和白色棋子的图像。
封装好的代码如下:
效果图如下:
4、将棋盘棋子位置通过列表表示
我们新建一个19*19的列表来存储棋子,列表中:
0:代表无棋子
1:代表白色
2:代表黑色
代码如下:
当为黑色棋子时:
当为白色棋子时:
效果图如下:
完整代码如下:
到此这篇关于基于python定位棋子位置及识别棋子颜色的文章就介绍到这了,更多相关python定位棋子位置及识别棋子颜色内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!