记录AI过某程滑块

距离问题

前端的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 结束,而是要结束在拖动起点

装逼结果

0:00 /0:00
暧昧合伙人
遗憾