修改算法位置
This commit is contained in:
@@ -31,7 +31,7 @@ except Exception as e:
|
|||||||
|
|
||||||
|
|
||||||
# -------------------------- Kadian 检测相关导入 --------------------------
|
# -------------------------- Kadian 检测相关导入 --------------------------
|
||||||
from npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
from algorithm.checkpoint.npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
||||||
|
|
||||||
from yolox.tracker.byte_tracker import BYTETracker
|
from yolox.tracker.byte_tracker import BYTETracker
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ FACE_RECOGNITION_ENABLED = True # 是否启用人脸识别
|
|||||||
police_prisoner_input_size = 1280
|
police_prisoner_input_size = 1280
|
||||||
|
|
||||||
# RTSP 服务配置
|
# RTSP 服务配置
|
||||||
RTSP_TARGET_FPS = 30.0
|
RTSP_TARGET_FPS = 10.0
|
||||||
FRAMES_PER_SEGMENT = 300
|
FRAMES_PER_SEGMENT = 300
|
||||||
VIDEO_OUTPUT_DIR = "./videos"
|
VIDEO_OUTPUT_DIR = "./videos"
|
||||||
WS_HOST = "0.0.0.0"
|
WS_HOST = "0.0.0.0"
|
||||||
@@ -607,11 +607,23 @@ class FrameProcessorWorker(threading.Thread):
|
|||||||
if result['has_passed']:
|
if result['has_passed']:
|
||||||
logger.info(f"[INFO] 犯人带出: {result['passed_person_id']}")
|
logger.info(f"[INFO] 犯人带出: {result['passed_person_id']}")
|
||||||
|
|
||||||
# 记录当前帧人脸告警信息
|
# # 记录当前帧人脸告警信息
|
||||||
current_face_alert = {
|
# current_face_alert = {
|
||||||
|
# "person_name": result['passed_person_id'],
|
||||||
|
# "timestamp": ts
|
||||||
|
# }
|
||||||
|
|
||||||
|
# 发送take_out类型的WebSocket消息
|
||||||
|
take_out_msg = {
|
||||||
|
"msg_type": "take_out",
|
||||||
"person_name": result['passed_person_id'],
|
"person_name": result['passed_person_id'],
|
||||||
"timestamp": ts
|
"historical_alert_count": result.get('historical_alert_count', 0)
|
||||||
}
|
}
|
||||||
|
try:
|
||||||
|
logger.info(f"take_out {take_out_msg}")
|
||||||
|
self.ws_queue.put(take_out_msg, timeout=1.0)
|
||||||
|
except queue.Full:
|
||||||
|
logger.warning("[WARN] ws_send_queue full, drop take_out message")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"[WARN] 人脸识别处理失败: {e}")
|
logger.error(f"[WARN] 人脸识别处理失败: {e}")
|
||||||
@@ -622,6 +634,9 @@ class FrameProcessorWorker(threading.Thread):
|
|||||||
result_img = result["image"]
|
result_img = result["image"]
|
||||||
result_type = result["alerts"]
|
result_type = result["alerts"]
|
||||||
|
|
||||||
|
result_img = frame
|
||||||
|
result_type = []
|
||||||
|
|
||||||
# 绘制人脸识别结果
|
# 绘制人脸识别结果
|
||||||
if video_face_prison_biz is not None and face_results:
|
if video_face_prison_biz is not None and face_results:
|
||||||
result_img = video_face_prison_biz.draw_detections(result_img, face_results)
|
result_img = video_face_prison_biz.draw_detections(result_img, face_results)
|
||||||
@@ -632,10 +647,10 @@ class FrameProcessorWorker(threading.Thread):
|
|||||||
cv2.putText(result_img, face_info_text, (10, result_img.shape[0] - 20),
|
cv2.putText(result_img, face_info_text, (10, result_img.shape[0] - 20),
|
||||||
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 255), 2)
|
cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 255), 2)
|
||||||
|
|
||||||
# 写视频
|
# # 写视频
|
||||||
writer, video_path = self._get_writer(cam_id, frame)
|
# writer, video_path = self._get_writer(cam_id, frame)
|
||||||
writer.write(result_img)
|
# writer.write(result_img)
|
||||||
self.video_counts[cam_id] = self.video_counts.get(cam_id, 0) + 1
|
# self.video_counts[cam_id] = self.video_counts.get(cam_id, 0) + 1
|
||||||
|
|
||||||
# 5) 通过 WebSocket 发送帧结果
|
# 5) 通过 WebSocket 发送帧结果
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -14,12 +14,11 @@ import base64
|
|||||||
import asyncio
|
import asyncio
|
||||||
import websockets
|
import websockets
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Dict, Any, Tuple, List
|
from typing import Dict, Any
|
||||||
from datetime import datetime
|
|
||||||
from test_cam import get_camera_preview_url
|
from test_cam import get_camera_preview_url
|
||||||
|
|
||||||
# -------------------------- Kadian 检测相关导入 --------------------------
|
# -------------------------- Kadian 检测相关导入 --------------------------
|
||||||
from npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
from algorithm.checkpoint.npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
||||||
|
|
||||||
from yolox.tracker.byte_tracker import BYTETracker
|
from yolox.tracker.byte_tracker import BYTETracker
|
||||||
|
|
||||||
|
|||||||
@@ -15,12 +15,11 @@ import asyncio
|
|||||||
import websockets
|
import websockets
|
||||||
import requests
|
import requests
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Dict, Any, Tuple, List
|
from typing import Dict, Any
|
||||||
from datetime import datetime
|
|
||||||
from test_cam import get_camera_preview_url
|
from test_cam import get_camera_preview_url
|
||||||
|
|
||||||
# -------------------------- Kadian 检测相关导入 --------------------------
|
# -------------------------- Kadian 检测相关导入 --------------------------
|
||||||
from npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
from algorithm.checkpoint.npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
||||||
|
|
||||||
from yolox.tracker.byte_tracker import BYTETracker
|
from yolox.tracker.byte_tracker import BYTETracker
|
||||||
|
|
||||||
|
|||||||
@@ -12,16 +12,14 @@ import yaml
|
|||||||
import json
|
import json
|
||||||
import base64
|
import base64
|
||||||
import asyncio
|
import asyncio
|
||||||
import requests
|
|
||||||
import websockets
|
import websockets
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Dict, Any, Tuple, List
|
from typing import Dict, Any
|
||||||
from datetime import datetime
|
|
||||||
from test_cam import get_camera_preview_url
|
from test_cam import get_camera_preview_url
|
||||||
|
|
||||||
# -------------------------- Kadian 检测相关导入 --------------------------
|
# -------------------------- Kadian 检测相关导入 --------------------------
|
||||||
from npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
from algorithm.checkpoint.npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
||||||
from npu_yolo_pose_onnx import YOLOv8_Pose_ONNX # Pose 专用模型
|
from algorithm.checkpoint.npu_yolo_pose_onnx import YOLOv8_Pose_ONNX # Pose 专用模型
|
||||||
from yolox.tracker.byte_tracker import BYTETracker
|
from yolox.tracker.byte_tracker import BYTETracker
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import os
|
|
||||||
import time
|
import time
|
||||||
import threading
|
import threading
|
||||||
import queue
|
import queue
|
||||||
@@ -14,11 +13,10 @@ import base64
|
|||||||
import asyncio
|
import asyncio
|
||||||
import websockets
|
import websockets
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Dict, Any, Tuple, List
|
from typing import Dict, Any
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
# -------------------------- Kadian 检测相关导入 --------------------------
|
# -------------------------- Kadian 检测相关导入 --------------------------
|
||||||
from npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
from algorithm.checkpoint.npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
|
||||||
|
|
||||||
from yolox.tracker.byte_tracker import BYTETracker
|
from yolox.tracker.byte_tracker import BYTETracker
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user