距离问题
前端的distance不是真实的距离,而是“拖块当前 left 在渲染宽中的比例,再映射回 size.big_width”。
识别代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| def identify_gap(self, bg, tp): """ 识别滑块缺口距离 bg: 背景图片(bytes) tp: 滑块图片(bytes) 返回: 缺口X坐标 """ bg_img = cv2.imdecode(np.frombuffer(bg, np.uint8), cv2.IMREAD_COLOR) tp_img = cv2.imdecode(np.frombuffer(tp, np.uint8), cv2.IMREAD_GRAYSCALE)
bg_shift = cv2.pyrMeanShiftFiltering(bg_img, 5, 50)
tp_gray = cv2.Canny(tp_img, 255, 255) bg_gray = cv2.Canny(bg_shift, 255, 255)
res = cv2.matchTemplate(bg_gray, tp_gray, cv2.TM_CCOEFF_NORMED) _, _, _, max_loc = cv2.minMaxLoc(res)
return max_loc[0]
|
关键逻辑
distance = 拖块 left / 280 * 300
前端上报的 jigsawPicWidth/Height 是 280/140。也不该跟着 gap 结束,而是要结束在拖动起点
装逼结果

