import threading
import cv2 # opencv库
import numpy as np # 将图片转换成数组,opencv无法直接处理mss的截图,用它进行转换
import mss # 截屏库
from concurrent.futures import ThreadPoolExecutor
import os
def findpic(x1, y1, x2, y2, lujin, xiangsidu):
chang = x2 - x1
kuan = y2 - y1
quyu = {"left": x1, "top": y1, "width": chang, "height": kuan}
with mss.mss() as sct:
# 获取大图片
quyujieping = sct.grab(quyu) # 对屏幕的左上角800*600进行截图
quyujieping = np.array(quyujieping) # 调用numpy库将mss库的截屏转换一下,并赋值给变量quyujieping
datupian_huidu = cv2.cvtColor(quyujieping, cv2.COLOR_BGR2GRAY)
xiaotupian = cv2.imread(lujin)
xiaotupian_huidu = cv2.cvtColor(xiaotupian, cv2.COLOR_BGR2GRAY)
# 在大图片中查找小图片
result = cv2.matchTemplate(datupian_huidu, xiaotupian_huidu, cv2.TM_CCOEFF_NORMED)
# 筛选结果
locations = np.where(result >= xiangsidu) # 用numpy筛选一下结果高于0.85的
locations = list(zip(*locations[::-1])) # 将结果再次处理一下