在上篇中顺序打印棋子的时候每条线上的棋子的y(高度坐标,注意算出来的x,y坐标是从左上方开始的)坐标有出入,在根据坐标排序的时候,就出现乱序了。
之前的做法就是根据棋盘每条横线的大概高度,误差在一定范围内的就认定为此线的棋子,大概的做法如下。
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("识别出错了!")
复制代码
- 6.9w
-
李瑞丰_liruifengv
ChatGPT
Vue.js
- 37.0w
-
程序员摩根
JavaScript
Vue.js
- 10.2w
-
星期一研究室
Vue.js
掘金·金石计划
- 4855
-
HullQin
掘金·日新计划
JavaScript