修改路径,从src放到根目录
This commit is contained in:
67
biz/video_face_biz.py
Normal file
67
biz/video_face_biz.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
视频检查业务类 - RTSP专用
|
||||
专门处理RTSP视频流中的人脸识别和检测
|
||||
"""
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
from typing import Optional, List, Dict
|
||||
import time
|
||||
from insightface.app import FaceAnalysis
|
||||
from biz.base_face_biz import BaseFaceBiz
|
||||
|
||||
class VideoFaceBiz(BaseFaceBiz):
|
||||
"""
|
||||
视频检查业务类 - RTSP专用
|
||||
专门处理RTSP视频流中的人脸识别和检测
|
||||
"""
|
||||
|
||||
def __init__(self, face_analysis: FaceAnalysis):
|
||||
"""
|
||||
初始化视频检查业务类
|
||||
|
||||
参数:
|
||||
face_analysis: 已初始化好的FaceAnalysis实例
|
||||
"""
|
||||
super().__init__(face_analysis)
|
||||
|
||||
def draw_detections(self, frame: np.ndarray, results: List[Dict]) -> np.ndarray:
|
||||
"""
|
||||
重写绘制检测结果方法
|
||||
只在检测到黑名单匹配时用红色绘制人脸框
|
||||
|
||||
参数:
|
||||
frame: 原始帧图像
|
||||
results: 检测结果列表
|
||||
|
||||
返回:
|
||||
绘制后的帧图像
|
||||
"""
|
||||
for result in results:
|
||||
# 只在黑名单匹配时绘制
|
||||
if result['is_match']:
|
||||
bbox = result['bbox']
|
||||
|
||||
# 使用红色绘制人脸框
|
||||
x1, y1, x2, y2 = bbox
|
||||
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 0, 255), 2)
|
||||
|
||||
# 添加简单的匹配信息
|
||||
best_match = result['best_match']
|
||||
similarity = result['similarity']
|
||||
|
||||
# 绘制匹配信息
|
||||
text = f"{best_match}: {similarity:.3f}"
|
||||
text_size = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 1)[0]
|
||||
|
||||
# 绘制文本背景
|
||||
cv2.rectangle(frame, (x1, y1 - text_size[1] - 5),
|
||||
(x1 + text_size[0], y1), (0, 0, 0), -1)
|
||||
|
||||
# 绘制文本
|
||||
cv2.putText(frame, text, (x1, y1 - 5),
|
||||
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 1)
|
||||
|
||||
return frame
|
||||
|
||||
|
||||
Reference in New Issue
Block a user