最新的腾讯滑块也是进行了一小部分更新,滑块也变的非常千奇百怪。
之前写的处理图像的方法可能太粗糙,有的背景图无法识别,可以在模板匹配之前,加个图像处理。
python
with open(f"./img/sprite_{random_num}.png", "rb") as f:
small_bytes = BytesIO(f.read())
small = Image.open(small_bytes).convert('RGBA')
# 对小图进行裁剪和灰度化
small = small.crop((140, 490, 260, 610))
small_gray = np.array(small.convert('L')) # 转换为灰度图
small_gray = cv2.equalizeHist(small_gray)
# 对大图进行灰度化
big_gray = np.array(big.convert('L')) # 转换为灰度图
# 图像增强(直方图均衡化)
big_gray = cv2.equalizeHist(big_gray)
small_edges = cv2.Canny(small_gray, 50, 150)
big_edges = cv2.Canny(big_gray, 50, 150)
result = cv2.matchTemplate(big_edges, small_edges, cv2.TM_CCOEFF_NORMED)
就能更好的适配