54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
import base64,re
|
|
import time, os,datetime, sched
|
|
import cv2
|
|
from io import BytesIO
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
import requests,re
|
|
import numpy as np
|
|
|
|
|
|
class quekou():
|
|
def __init__(self):
|
|
self.t = int(time.time() * 1000)
|
|
pass
|
|
def save_png(self,path,con):
|
|
with open(path, "wb") as fp:
|
|
fp.write(con)
|
|
|
|
def get_distance2(self,bg,tp):
|
|
|
|
bg = base64.b64decode(bg) # base64转二进制
|
|
|
|
tp = base64.b64decode(tp) # base64转二进制
|
|
|
|
res = self.det.slide_match(tp, bg, simple_target=True)
|
|
res=res['target'][0]
|
|
|
|
return res
|
|
|
|
def get_distance(self, bg, tp):
|
|
|
|
bg = base64.b64decode(bg) # base64转二进制
|
|
|
|
tp = base64.b64decode(tp) # base64转二进制
|
|
''' bg: 背景图片 tp: 缺口图片 out:输出图片 '''
|
|
# 读取背景图片和缺口图片
|
|
bg_img = Image.open(BytesIO(bg)) # 背景图片
|
|
tp_img = Image.open(BytesIO(tp)) # 缺口图片
|
|
bg_edge = cv2.Canny(np.array(bg_img), 100, 200)
|
|
tp_edge = cv2.Canny(np.array(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) # 寻找最优匹配
|
|
# 绘制方框
|
|
tl = max_loc # 左上角点的坐标
|
|
return tl[0]
|
|
|
|
|
|
|
|
|