通过两张图片对比,计算平移验证码需要平移的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

三个参数分别为背景图片路径、缺口图片路径以及识别标识后保存到本地的图片路径,其中第三个参数在正式运行的时候可酌情考虑删除。