基于计算机视觉的棋盘图像识别

本文介绍了一种使用计算机视觉和卷积神经网络(CNN)识别棋子及其在棋盘上位置的方法。作者创建了一个自定义数据集,包含2406张图像,使用了Canny边缘检测和Hough变换进行棋盘检测。通过转移学习,利用预训练的VGG16模型提高了分类效果。最终应用能展示棋盘的2D图像并输出结果。
摘要由CSDN通过智能技术生成

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本期我们将一起学习如何使用计算机视觉技术识别棋子及其在棋盘上的位置

我们利用计算机视觉技术和卷积神经网络(CNN)为这个项目创建分类算法,并确定棋子在棋盘上的位置。最终的应用程序会保存整个图像并可视化的表现出来,同时输出棋盘的2D图像以查看结果。

(左)实时摄像机进给的帧和棋盘的(右)二维图像

01. 数据

我们对该项目的数据集有很高的要求,因为它最终会影响我们的实验结果。我们在网上能找到的国际象棋数据集是使用不同的国际象棋集、不同的摄影机拍摄得到的,这导致我们创建了自己的数据集。我使用国际象棋和摄像机(GoPro Hero6 Black以“第一人称视角”角度)生成了自定义数据集,这使我的模型更加精确。该数据集包含2406张图像,分为13类(请参阅下文)。总结:这花费了我们很多时间,但是这使得训练图像尽可能地接近在应用程序中使用时所看到的图像。

自定义数据集的细分

为了构建该数据集,我首先创建了capture_data.py,当单击S键时,该视频从视频流中获取一帧并将其保存。这个程序使我能够无缝地更改棋盘上的棋子并一遍又一遍地捕获棋盘的图像,直到我建立了大量不同的棋盘配置为止。接下来,我创建了create_data.py,以使用下一部分中讨论的检测技术将其裁剪为单独小块。最后,我通过将裁剪后的图像分成带标签的文件夹来对它们进行分类。

02. 棋盘检测

对于棋盘检测,我想做的事情比使用OpenCV函数findChessboardCorners复杂的多,但又不像CNN那样高级。使用低级和中级计算机视觉技术来查找棋盘的特征,然后将这些特征转换为外边界和64个独立正方形的坐标。该过程以Canny边缘检测和Hough变换生成的相交水平线、垂直线的交点为中心。层次聚类用于按距离对交叉点进行分组,并对各组取平均值以创建最终坐标(请参见下文)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值