C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)

前言

作者:浪子花梦一个有趣的程序员 ~
今天我们来学习一下如何的使用 OpenCvSharp 对图片的一个简单的处理,让我们一起装× 吧,哈哈哈 ~
文章学习于 赵老师的 五子棋课 ^ _ ^
.
前言文章如下所示(教会你如何获取进程的截图):
C# 之 鼠标点击进程 —— 截取图片
C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)


手把手使用 OpenCvSharp

  1. 首先, 安装 OpenCvSharp 库(第二个也要安装):
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)

  2. 准备需要处理的图片(获取图片方法已经在上文展示过):
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    我们的任务就是识别上面的棋子 + 位置 + 颜色

  3. 我们现在不在绘图工具中打开图片,而是在一个新的窗口中打开图片,方法如下所示:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    其中,Mat boardMat = BitmapConverter.ToMat(bitmap1); 这一行代码,是把图片转换为 矩阵格式,各种各样的操作都是基于这个类实现的,比如上面的显示图片代码,将图片在新的窗口下显示出来 . . .
    如下所示:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)

  4. 因为这个棋盘上面的所有元素会为棋子的识别造成影响,所以我们需要对这个棋子做一个模糊化处理,实现代码如下所示:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    效果如下所示:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)

  5. 转换为灰度图片,进行棋子识别:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    效果如下所示:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    我们发现许多的棋子并没有识别出来,所以我们需要换一种方式来识别旗子,定位棋子的位置 . . .

  6. 识别棋子位置,并且识别其颜色,代码如下所示:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    输出其位置 + 图片:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    效果如下所示:
    C# 之 OpenCvSharp使用(五子棋的棋子、颜色识别)
    我们发现棋子的位置与颜色已经识别成功 . . .

到此为止,我们下期再见 ~