Python实现简单平移验证码计算
通过两张图片对比,计算平移验证码需要平移的X轴举例,代码如下:(自己收藏备用)
def get_distance(bg_img, tp_img, mark_img):
'''
bg: 背景图片
tp: 缺口图片
out:输出图片
'''
# 读取背景图片和缺口图片
bg_img = cv2.imread(bg_img) # 背景图片
tp_img = cv2.imread(tp_img) # 缺口图片
# 识别图片边缘
bg_edge = cv2.Canny(bg_img, 100, 200)
tp_edge = cv2.Canny(tp_img, 100, 200)
# 转换图片格式
bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)
tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)
# 缺口匹配
res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # 寻找最优匹配
# 绘制方框
th, tw = tp_pic.shape[:2]
tl = max_loc # 左上角点的坐标
br = (tl[0] + tw, tl[1] + th) # 右下角点的坐标
cv2.rectangle(bg_img, tl, br, (0, 0, 255), 2) # 绘制矩形
cv2.imwrite(mark_img, bg_img) # 保存在本地
# 返回缺口的X坐标
distance = tl[0] * 2 / 3
# print('原来:', tl[0])
print('真实:', distance)
return distance
三个参数分别为背景图片路径、缺口图片路径以及识别标识后保存到本地的图片路径,其中第三个参数在正式运行的时候可酌情考虑删除。