使用OpenCV计算滑块距离

cooolr 于 2023-02-14 发布

我没有按照引用文章的思路,我是把背景图片缺口部分转成白色,其余部分全黑,然后滑块图片全白,再计算距离,准确很多。

template.jpg

block.jpg

import cv2
import base64
import numpy as np

template = cv2.imread("template.jpg", cv2.IMREAD_UNCHANGED)
block = cv2.imread("block.jpg", cv2.IMREAD_UNCHANGED)
# 转成灰度照片
block = cv2.cvtColor(block, cv2.COLOR_BGR2GRAY)
template = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
# 将灰度图中大于0的像素点变为白色(滑块图片全部变成白色)
ret, block = cv2.threshold(block,0,255,cv2.THRESH_BINARY)
# 将灰度图中大于245的像素点变为白色,小于245的像素点变为黑色(背景图片缺口部分变成白色,其余全黑)
ret, template = cv2.threshold(template,245,255,cv2.THRESH_BINARY)
# 数据类型转换为float32
block = block.astype(np.float32)
template = template.astype(np.float32)
# 计算距离
result = cv2.matchTemplate(block,template,cv2.TM_CCOEFF_NORMED)
x, y = np.unravel_index(result.argmax(),result.shape)
print('x坐标为:%d'%(y))