|
@@ -42,7 +42,8 @@ from ultralytics.data.augment import classify_transforms
|
|
from utils import TryExcept, emojis
|
|
from utils import TryExcept, emojis
|
|
from utils.downloads import curl_download, gsutil_getsize
|
|
from utils.downloads import curl_download, gsutil_getsize
|
|
from utils.metrics import box_iou, fitness
|
|
from utils.metrics import box_iou, fitness
|
|
-
|
|
|
|
|
|
+import io
|
|
|
|
+import base64
|
|
FILE = Path(__file__).resolve()
|
|
FILE = Path(__file__).resolve()
|
|
ROOT = FILE.parents[1] # YOLOv5 root directory
|
|
ROOT = FILE.parents[1] # YOLOv5 root directory
|
|
RANK = int(os.getenv('RANK', -1))
|
|
RANK = int(os.getenv('RANK', -1))
|
|
@@ -1369,6 +1370,20 @@ def apply_classifierarm(x, model, img, im0,modelname):
|
|
|
|
|
|
return x
|
|
return x
|
|
|
|
|
|
|
|
+def numpy_image_to_base64(image_array):
|
|
|
|
+ # 将 numpy 数组转换为 PIL 图像
|
|
|
|
+ image_array = cv2.cvtColor(image_array, cv2.COLOR_BGR2RGB)
|
|
|
|
+ image = Image.fromarray(np.uint8(image_array))
|
|
|
|
+ # 创建一个内存中的二进制流
|
|
|
|
+ buffer = io.BytesIO()
|
|
|
|
+ # 将 PIL 图像保存到二进制流中,格式为 PNG
|
|
|
|
+ image.save(buffer, format="PNG")
|
|
|
|
+ # 获取二进制流中的数据
|
|
|
|
+ img_bytes = buffer.getvalue()
|
|
|
|
+ # 将二进制数据进行 Base64 编码
|
|
|
|
+ base64_encoded = base64.b64encode(img_bytes).decode('utf-8')
|
|
|
|
+ return base64_encoded
|
|
|
|
+
|
|
def compute_IOU(rec1,rec2):
|
|
def compute_IOU(rec1,rec2):
|
|
"""
|
|
"""
|
|
计算两个矩形框的交并比。
|
|
计算两个矩形框的交并比。
|
|
@@ -1395,9 +1410,9 @@ def compute_IOU(rec1,rec2):
|
|
return S_cross/(S1+S2-S_cross),torch.tensor((x1,y1,x2,y2))
|
|
return S_cross/(S1+S2-S_cross),torch.tensor((x1,y1,x2,y2))
|
|
|
|
|
|
def task(cur,conn,url,urla):
|
|
def task(cur,conn,url,urla):
|
|
- modelnamedir = {'0':'helmet','8':'danager','10':'uniform','14':'smoke','16':'fire','21':'cross','25':'fall','29':'occupancy','30':'liquid','31':'pressure','32':'sleep','33':'conveyor','34':'personcount','35':'gloves','36':'sit','37':'other','38':'duty','98':'face','51':'run','64':'jump'}
|
|
|
|
- modellabeldir = {'0':'head','8':'person','10':'other','14':'smoke','16':'fire','21':'cross','25':'fall','29':'car','30':'liquid','31':'pressure','32':'sleep','33':'conveyor','34':'personcount','35':'gloves','36':'sit','37':'other','38':'person','98':'face','51':'person','64':'person'}
|
|
|
|
- modelalgdir = {'helmet': '0','danager': '8','uniform': '10','smoke': '14','fire': '16','cross': '21','fall': '25','occupancy': '29','liquid': '30','pressure': '31','sleep': '32','conveyor': '33','personcount': '34','gloves': '35','sit': '36','other': '37','duty': '38','face': '98','run': '51','jump':'64'}
|
|
|
|
|
|
+ modelnamedir = {'0':'helmet','8':'danager','10':'uniform','14':'smoke','16':'fire','21':'cross','25':'fall','29':'occupancy','30':'liquid','31':'pressure','32':'sleep','33':'conveyor','34':'personcount','35':'gloves','36':'sit','37':'other','38':'duty','98':'face','51':'run','64':'jump','62':'clear'}
|
|
|
|
+ modellabeldir = {'0':'head','8':'person','10':'other','14':'smoke','16':'fire','21':'cross','25':'fall','29':'car','30':'liquid','31':'pressure','32':'sleep','33':'conveyor','34':'personcount','35':'gloves','36':'sit','37':'other','38':'person','98':'face','51':'person','64':'person','62':'hand'}
|
|
|
|
+ modelalgdir = {'helmet': '0','danager': '8','uniform': '10','smoke': '14','fire': '16','cross': '21','fall': '25','occupancy': '29','liquid': '30','pressure': '31','sleep': '32','conveyor': '33','personcount': '34','gloves': '35','sit': '36','other': '37','duty': '38','face': '98','run': '51','jump':'64','clear':'62'}
|
|
data = {
|
|
data = {
|
|
"algorithmCode": None,
|
|
"algorithmCode": None,
|
|
"deviceIp":None
|
|
"deviceIp":None
|