象棋棋谱之棋子识别(二)

简介: 象棋棋谱之棋子识别(二)
  • 先来张效果图


网络异常,图片无法展示
|


  • 处理的方式


图像灰度化->二值化处理->形态学(膨胀)->轮廓提取->得到矩形边框->数据过滤->图像提取->图像匹配
复制代码


  • 得到轮廓矩形边框


#根据轮廓获取最小矩形边框
x, y, w, h = cv.boundingRect(cnts[i])
复制代码


网络异常,图片无法展示
|


  • 数据过滤


#轮廓获取得到的是上面图,下面的会有一些干扰项#通过拿到边框的坐标,然后根据宽高的比例进行过滤,我这里根据宽高的差 
x, y, w, h = cv.boundingRect(cnts[i])
   print(x,y,w,h)
   if(abs(w-h)>20):
     continue
复制代码


  • 数据识别


#识别之前要做的是边框排序,根据上面拿到的轮廓数据#这里按照Y,X递增的方式进行
questionCnts2 = sorted(questionCnts.copy(), key=lambda x: (x[1],x[0]))
#排序我这里遇到了问题,因为每行棋子识别的时候,坐标有些高低差导致排序结果可能跟棋盘显示有些出入#其实识别之后可以根据上一篇文章得到的棋盘表格一步一步的得到棋子,我这里没做#我用了个笨办法处理的 就是每行的Y轴根据个大致范围固定了 
if abs(y - 19) < 20:
   y = 19
 if abs(y - 88) < 20:
   y = 88  
#拿到了边框后我们可以根据边框截取抠图了  
x, y, w, h = questionCnts2[i]    
# print(x, y, w, h)  
im = img[y:y + h, x:x + w]    
#抠图后然后根据模板匹配算法得到最匹配的模板   
result = cv.matchTemplate(cv.resize(old_img,None,fx=0.8, fy=0.8, interpolation = cv.INTER_CUBIC),tempImg,cv.TM_CCOEFF)   
(_, score, _, _) = cv.minMaxLoc(result)   
if check_score == 0 or score > check_score:
   #最大得分项
   check_score = score
   #最大得分项的文件名,然后根据字典获取棋子名称      
   check_img = fileName
复制代码


  • 最终效果图
    这里可以再完善下通过上一篇获取的棋盘信息进行棋盘保存


网络异常,图片无法展示
|

相关文章
|
API
QT基础入门——Qt事件(五)
QT基础入门——Qt事件(五)
1349 0
QT基础入门——Qt事件(五)
|
监控 架构师 前端开发
软件研发管理制度
软件研发管理制度
4090 1
象棋棋谱之棋子识别(三)
象棋棋谱之棋子识别(三)
1184 1
|
6月前
|
Python
使用 Python 实现 Word 文档文本格式化全解析
周一早九点,领导催改50页合同格式?别再手动滚动了!用Python+python-docx库,2秒自动完成公司名加粗红色、段落对齐、标题样式等批量排版。掌握Document-Paragraph-Run三层结构,轻松搞定Word自动化,解放双手,专注真正重要的事。(239字)
664 0
|
11月前
|
SQL 编解码 索引
正交时频空间调制(OTFS)技术详解:基础原理与未来挑战
正交时频空间(OTFS)调制将信息嵌入延迟-多普勒域,有效应对高速移动下的多普勒效应。相比OFDM,OTFS在高动态信道中具备全分集增益、低导频开销与强鲁棒性,是6G候选技术之一。
2687 0
|
编解码 监控
使用OBS Studio进行多路直播时,有哪些高级设置可以优化同步性?
使用OBS Studio进行多路直播时,有哪些高级设置可以优化同步性?
|
Python
Flask三种添加路由的方法
Flask 是一个流行的 Python Web 框架,它提供了多种方法来添加路由。路由是将 URL 映射到特定函数的过程,它是构建 Web 应用程序的基础。本文将介绍 Flask 中几种常用的路由添加方法,并附带代码示例。
747 3
|
机器学习/深度学习 存储 自动驾驶
基于YOLOv8深度学习的高精度车辆行人检测与计数系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的高精度车辆行人检测与计数系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
|
XML 设计模式 JSON
QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解-1
QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解
|
安全 算法 API
阿里云用户开启MFA多因素认证的倡议书
因保管不当导致控制台登录密码泄露,很可能会被黑灰产盯上,发生盗用账户资金创建大量资源挖矿、删除用户数据进行勒索等安全的事件,严重威胁用户和平台的安全。2024年8月20日开始RAM访问控制产品将陆续为所有用户开启登录时强制进行MFA多因素认证。
1969 0
阿里云用户开启MFA多因素认证的倡议书