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

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

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


  • 上个对比效果


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


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


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

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


相关文章
|
5天前
|
算法
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
|
2月前
|
人工智能 BI
技术心得:国王游戏&保护花朵
技术心得:国王游戏&保护花朵
12 0
象棋棋谱之棋子识别(二)
象棋棋谱之棋子识别(二)
441 0
两句话,ChatGPT帮我写一个打飞机的游戏
两句话,ChatGPT帮我写一个打飞机的游戏
|
算法
算法创作|纸牌三角形
算法创作|纸牌三角形
55 0
|
小程序
做个经典宝石方块游戏
在做了一个月的进阶课程之后,终于又可以回来做游戏了。不得不说,对于我来讲做课程要比做游戏的难的多。做出来是一回事儿,讲出来又是另一回事儿了。尤其是还希望能讲的明白,讲的浅显易懂,感觉还是很难的。不过还好,做课程这件事情也是可以练习的,比如说我现在面对镜头讲一个东西的时候,就比一年前要好很多了。
122 0
|
索引
消除游戏中宝石下落的原理和实现
在消除游戏中,发生消除之后,会留下空白位置。此时,如果上方有其它的宝石,那这些宝石就会下落填充空白位置。今天我们就来了解一下宝石下落的方法以及实现。
145 0
|
C语言
国王的许诺 相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中
国王的许诺 相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中
365 0
|
测试技术 Android开发
autojs象棋识别棋子
牙叔教程 简单易懂
160 0
|
人工智能 算法 IDE
与「看不见的手」掷骰子的人
500 亿管理规模已经暗示王阳所在的这家公司掌握了某种平衡之美——它兼顾了最为前沿的研究与结果导向。这其中的秘诀是什么?这台神秘而又充满精度的金融机器又是如何高效运转的?
143 0
与「看不见的手」掷骰子的人