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

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

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


  • 上个对比效果


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


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


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

   在上篇中顺序打印棋子的时候每条线上的棋子的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("识别出错了!")


相关文章
|
3月前
|
JSON 安全 JavaScript
静态扫描工具第二讲-Horusec
Horusec是一款极速开源SAST工具,18种语言一键扫描,3分钟出报告(较Semgrep提速10倍),深度检测漏洞与Git历史密钥泄露,支持CLI/CI/CD及自定义规则,简单高效、开箱即用。
296 0
|
8月前
|
弹性计算 缓存 数据库
2026年阿里云新/老/学生/企业用户云服务器权益活动汇总与参与指南
2026年阿里云服务器优惠覆盖新老用户、企业与学生,核心有轻量秒杀、ECS“99/199计划”、学生/教师专属权益、企业迁移补贴等,参与路径清晰,按身份与场景操作即可锁定低价。以下是无营销的活动汇总与参与指南。
1003 2
|
9月前
|
存储 弹性计算 监控
云账单分析与优化工具使用
本指南系统介绍云账单分析与优化工具的使用方法,涵盖账单解析、成本分摊、预算管理、资源优化等核心模块,助力企业实现云成本可视化、精细化管控,通过标签体系、智能建议与多账号协同,推动从“被动付费”到“主动治理”的转型,最大化释放云上成本优化潜力。(238字)
431 0
象棋棋谱之棋子识别(二)
象棋棋谱之棋子识别(二)
786 0
|
9月前
|
人工智能 供应链 搜索推荐
我是一家电商企业,推荐一款Agent产品:从选型到落地的全攻略
双11后客服积压、发货出错、营销低效?传统电商遭遇人力与效率瓶颈。智能Agent成破局关键:0.3秒响应、错误率降至0.2%、转化率翻倍。实在Agent依托TARS大模型,覆盖客服、订单、营销全链路,降本增效显著,助力中小及大型电商实现数字化转型。选对Agent,才是赢在存量时代的开始。(239字)
1042 0
|
存储 JSON 数据挖掘
京东商品评论接口技术实现:从接口分析到数据挖掘全方案
本文详解京东商品评论接口技术实现,涵盖参数构造、反爬应对、数据解析与分析等核心问题,提供合规高效的数据采集方案,并严格遵循平台规则与数据规范,适用于市场分析与产品优化。
|
人工智能 C#
AU音乐制作之如何把音乐的音质提高于320KBps、采样率高于44.1KHz-音频文件处理-adobe audition (原Cool Edit Pro)-世界级好用软件之一
AU音乐制作之如何把音乐的音质提高于320KBps、采样率高于44.1KHz-音频文件处理-adobe audition (原Cool Edit Pro)-世界级好用软件之一
2555 66
AU音乐制作之如何把音乐的音质提高于320KBps、采样率高于44.1KHz-音频文件处理-adobe audition (原Cool Edit Pro)-世界级好用软件之一
Flutter 中使用 ICON
Flutter 中使用 ICON
845 5
Flutter 中使用 ICON
|
机器学习/深度学习 前端开发 JavaScript
前端小白也能学会的高大上技巧:如何让你的网页支持语音控制?
【10月更文挑战第31天】你是否曾梦想过只需动动嘴皮子就能操控网页?现在,这个梦想触手可及。即使你是前端小白,也能轻松学会让网页支持语音控制的高大上技巧。本文将介绍语音控制的基本概念、实现方法和具体示例,带你走进语音控制的奇妙世界。通过Web Speech API,你只需掌握基本的HTML、CSS和JavaScript知识,就能实现语音识别和控制功能。快来尝试吧!
1816 4
|
域名解析 缓存 运维
【域名解析DNS专栏】DNS解析策略:如何实现负载均衡与故障转移
【5月更文挑战第23天】DNS在互联网中扮演关键角色,将域名转换为IP地址。本文探讨DNS的负载均衡和故障转移技术,以增强服务可用性和性能。负载均衡包括轮询(简单分配流量)和加权轮询(按服务器处理能力分配)。故障转移通过主备策略和TTL值实现快速切换,确保服务连续性。实践案例展示了在电商网站如何应用这些策略。DNS策略优化可提升网站速度和稳定性,借助云服务和智能工具,DNS管理更加高效。
2384 1
【域名解析DNS专栏】DNS解析策略:如何实现负载均衡与故障转移

热门文章

最新文章