xtj 3 дней назад
Родитель
Сommit
4a6dedb856
3 измененных файлов с 370 добавлено и 238 удалено
  1. 3 3
      detectopencvmut0113auta.py
  2. 19 4
      utils/general.py
  3. 348 231
      utils/renwu.py

+ 3 - 3
detectopencvmut0113auta.py

@@ -203,11 +203,11 @@ class Detect:
         if v8:
             self.model = AutoBackend(self.opt.weights, device=device, dnn=self.opt.dnn, data=self.opt.data,
                                      fp16=self.opt.half)
-            if Path(weights).stem in ['arm', 'uniform','fall']:
+            if Path(weights).stem in ['arm', 'uniform','fall','persontre']:
                 if Path(weights).stem == 'arm':
                     self.personmodel = AutoBackend('yolov8m.pt', device=device, dnn=self.opt.dnn, data=self.opt.data,
                                                    fp16=self.opt.half)
-                elif Path(weights).stem in ['uniform','fall']:
+                elif Path(weights).stem in ['uniform','fall','persontre']:
                     self.personmodel = AutoBackend('yolo11m.pt', device=device, dnn=self.opt.dnn, data=self.opt.data,
                                                    fp16=self.opt.half)
         else:
@@ -430,7 +430,7 @@ class Detect:
                     n = (det[:, 5] == c).sum()  # detections per class
                     s += f"{n} {self.names[int(c)]}{'s' * (n > 1)}, "  # add to string
                 # Write results
-                if Path(self.opt.weights).stem in ['arm', 'uniform','fall']:
+                if Path(self.opt.weights).stem in ['arm', 'uniform','fall','persontre']:
                     personpred = self.personmodel(im[i][None], None, None)
                     personpred = non_max_suppression(personpred, 0.7, self.opt.iou_thres, 0,
                                                      self.opt.agnostic_nms, max_det=self.opt.max_det)

+ 19 - 4
utils/general.py

@@ -42,7 +42,8 @@ from ultralytics.data.augment import classify_transforms
 from utils import TryExcept, emojis
 from utils.downloads import curl_download, gsutil_getsize
 from utils.metrics import box_iou, fitness
-
+import io
+import base64
 FILE = Path(__file__).resolve()
 ROOT = FILE.parents[1]  # YOLOv5 root directory
 RANK = int(os.getenv('RANK', -1))
@@ -1369,6 +1370,20 @@ def apply_classifierarm(x, model, img, im0,modelname):
 
     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):
     """
     计算两个矩形框的交并比。
@@ -1395,9 +1410,9 @@ def compute_IOU(rec1,rec2):
         return S_cross/(S1+S2-S_cross),torch.tensor((x1,y1,x2,y2))
 
 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 = {
             "algorithmCode": None,
             "deviceIp":None 

Разница между файлами не показана из-за своего большого размера
+ 348 - 231
utils/renwu.py


Некоторые файлы не были показаны из-за большого количества измененных файлов