这一篇主要实现定位棋子位置及识别棋子颜色。

围棋棋盘原图如下:

经过节处理,已经将棋盘位置找到,如下图:

现在根据新图,进行棋子位置的定位

1、将棋盘分割成19×19的小方格

为了定位出棋盘每个交叉点上,是否有棋子,需要将棋盘分割成19×19的小方格,由于围棋棋盘每个交叉线直接距离相同,是矩形,因此分割成小方格十分容易,如下图:

若想将棋盘分割成19×19的小方格,需要知道以下几个参数。

这些可以使用imagewathch(vs下opencv的插件)工具,方便的知道,这个工具可以实时查看图像的宽高,某个位置的像素值。这个工具的使用可以看我另外一篇文章:opencv用vs2013调试时用image watch插件查看图片,代替一堆数据,直观很多。
下面是将原图分割成19×19小方格的代码

2、根据像素占比识别是否是黑色棋子

上面三种图像是我们分割成小方格后的三种主要形态,分别代表黑色棋子,白色棋子以及无棋子。其中黑色棋子最好查找,我们将图像进行灰度化——二值化后,通过统计黑色像素占比超过一定数值,就能知道该处是否有黑色棋子。

这里我将统计黑色占比的代码,封装成了一个函数,如下;

3、根据像素占比识别是否是白色棋子

同样的,我们可以统计像素中白色占比,来进行识别该位置是否是白色棋子,但是这里需要注意一个问题,如果按照上面黑色棋子识别方法进行灰度化、二值化会造成白色棋子和无棋子分辨不了,二者都有大面积的白色,因此这里需要调整二值化的阈值,分开无棋子和白色棋子的图像。

封装好的代码如下:

效果图如下:

4、将棋盘棋子位置通过列表表示

我们新建一个19*19的列表来存储棋子,列表中:

0:代表无棋子
1:代表白色
2:代表黑色

代码如下:

当为黑色棋子时:

当为白色棋子时:

效果图如下:

完整代码如下:

到此这篇关于基于python定位棋子位置及识别棋子颜色的文章就介绍到这了,更多相关python定位棋子位置及识别棋子颜色内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!