You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.6 KiB

10 months ago
from abc import abstractmethod,ABC
from shapely.geometry import Point, Polygon
import numpy as np
import cv2
11 months ago
10 months ago
class ModelBase(ABC):
11 months ago
def __init__(self):
10 months ago
self.name = None #基于name来查询,用户对模型的配置参数,代表着模型名称需要唯一 2024-6-18 -逻辑还需要完善和验证
self.version = None
self.model_type = None # 模型类型 1-图像分类,2-目标检测(yolov5),3-分割模型,4-关键点
self.do_map = { # 定义插件的入口函数 --
# POCType.POC: self.do_verify,
# POCType.SNIFFER: self.do_sniffer,
# POCType.BRUTE: self.do_brute
}
11 months ago
def __del__(self):
10 months ago
print("资源释放")
def draw_polygon(self, img, polygon_points,color=(0, 255, 0)):
self.polygon = Polygon(polygon_points)
points = np.array([self.polygon.exterior.coords], dtype=np.int32)
cv2.polylines(img, points, isClosed=True, color=color, thickness=2)
def is_point_in_region(self, point):
'''判断点是否在区域内,需要先执行draw_polygon'''
if self.polygon:
return self.polygon.contains(Point(point))
else:
return False
def save_warn(self):
'''保存报警信息'''
pass
def send_warn(self):
'''发送报警信息'''
11 months ago
pass
@abstractmethod
10 months ago
def verify(self,image,data):
'''
:param image: 需要验证的图片
:param data: select t1.model_id,t1.check_area,t1.polygon ,t2.duration_time,t2.proportion,t2.model_path
:return: detections,bwarn,warntext
'''
11 months ago
pass