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

简介: 象棋棋谱之棋子识别(三)

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


  • 上个对比效果


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


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


  • 遇到的主要问题
    想要保存棋盘的话需要知道每个坐标的棋子。

   在上篇中顺序打印棋子的时候每条线上的棋子的y(高度坐标,注意算出来的x,y坐标是从左上方开始的)坐标有出入,在根据坐标排序的时候,就出现乱序了。


   之前的做法就是根据棋盘每条横线的大概高度,误差在一定范围内的就认定为此线的棋子,大概的做法如下。


#第一排的棋子高度大概就在19左右 
          if abs(y - 19) < 20: 
             y = 19
复制代码


我们想要完整实现棋盘识别的话,需要知道每个坐标点的棋子,上面的方法就没必要了。这里需要的是根据棋盘的坐标点来寻找匹配的棋子坐标,然后识别每个坐标点上的棋子。思路如下:\


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


     思路如下


chess_array=[[] for i in range(10)]
if(len(sxFilter)==9 and len(zxFilter)==10):
  #竖线 直线
  print("---------------------")
  for i in range(len(zxFilter)):
        for j in range(len(sxFilter)):
            #直线坐标
            x1,x2,y1,y2=zxFilter[i]
            #竖线坐标
            x3,x4,y3,y4=sxFilter[j]
            check = False
            print(zxFilter[i],"-",sxFilter[j],i,j)
            for k in range(len(questionCnts)):
                  x, y, w, h=questionCnts[k]
                  #获取中心坐标
                  centre_x=x+w/2
                  centre_y=y+h/2
                  #范围之内匹配成功
                  print(centre_x,"-",centre_y)
                  #获取范围
                  if(abs(centre_x-x3)<25 and abs(centre_y-y1)<25):
                    print("命中!")
                    check=True
                    #抠图
                    im = img[y:y + h, x:x + w]
                    #匹配
                    orc = get_match(im)
                    if orc is not None:
                          chess_array[i].append(orc)
                    else:
                        print("未识别...")
            if not check:
                  chess_array[i].append("空空空")
else:
  print("识别出错了!")


相关文章
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
1029 23
|
弹性计算 监控 数据可视化
ECS网络流量监控
ECS网络流量监控
671 2
采用zookeeper的EPHEMERAL节点机制实现服务集群的陷阱
在集群管理中使用Zookeeper的EPHEMERAL节点机制存在很多的陷阱,毛估估,第一次使用zk来实现集群管理的人应该有80%以上会掉坑,有些坑比较隐蔽,在网络问题或者异常的场景时才会出现,可能很长一段时间才会暴露出来。
14773 1
|
11月前
|
存储 机器学习/深度学习 编解码
基于STM32的车牌识别系统
基于STM32的车牌识别系统
536 0
|
云栖大会
2024云栖大会主论坛议程发布!
2024云栖大会 9月19日至9月21日 杭州·云栖小镇 三日主论坛议程正式发布!
334 17
|
10月前
|
存储 人工智能 编译器
【AI系统】CPU 指令集架构
本文介绍了指令集架构(ISA)的基本概念,探讨了CISC与RISC两种主要的指令集架构设计思路,分析了它们的优缺点及应用场景。文章还简述了ISA的历史发展,包括x86、ARM、MIPS、Alpha和RISC-V等常见架构的特点。最后,文章讨论了CPU的并行处理架构,如SISD、SIMD、MISD、MIMD和SIMT,并概述了这些架构在服务器、PC及嵌入式领域的应用情况。
694 5
|
10月前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
140 5
|
网络协议 安全 Java
Wireshark抓取Android数据包
Wireshark抓取Android数据包
2327 0
|
存储 安全 开发工具
oss客户端加密
阿里云OSS支持客户端加密,允许用户在本地加密数据后上传,确保数据在传输和存储时的隐私安全。用户管理主密钥,控制数据密钥加密与解密,增强数据控制和合规性。此机制适用于高安全需求场景,如金融、医疗等,但用户需负责密钥管理和加密操作。
479 8
|
开发工具 Android开发
Android studio历史版本下载
Android studio历史版本下载
4671 0

热门文章

最新文章