优化性能
This commit is contained in:
parent
f1080cca23
commit
1bf393d01e
24
face_rec.py
24
face_rec.py
@ -1440,6 +1440,8 @@ class FaceRecognitionSystem:
|
||||
self.logger.error(f"处理WebSocket消息错误: {e}")
|
||||
self.ws_connected = False
|
||||
break
|
||||
|
||||
await asyncio.sleep(0.01) # 短暂延迟,避免 CPU 空转
|
||||
except Exception as e:
|
||||
self.logger.error(f"WebSocket消息处理任务异常: {e}")
|
||||
self.ws_connected = False
|
||||
@ -1551,14 +1553,32 @@ class FaceRecognitionSystem:
|
||||
stream_check_counter = 0
|
||||
stream_check_interval = 150 # 每150帧(约5秒)检查一次
|
||||
|
||||
# 帧率控制
|
||||
target_fps = 30
|
||||
frame_interval = 1000 // target_fps # 每帧间隔毫秒
|
||||
last_frame_time = time.time() * 1000
|
||||
|
||||
# 清理定时控制
|
||||
last_cleanup_time = time.time()
|
||||
|
||||
# 添加人脸消失计数器
|
||||
no_face_counter = 0
|
||||
no_face_threshold = 30 # 连续30帧(约1秒)没有检测到人脸才清空
|
||||
|
||||
try:
|
||||
while True:
|
||||
# 定期清理过期记录,防止内存无限增长
|
||||
self.cleanup_expired_records()
|
||||
current_time = time.time()
|
||||
|
||||
# 每60秒清理一次过期记录,防止内存无限增长
|
||||
if current_time - last_cleanup_time >= 60:
|
||||
self.cleanup_expired_records()
|
||||
last_cleanup_time = current_time
|
||||
|
||||
# 帧率控制:控制到约30fps
|
||||
elapsed = time.time() * 1000 - last_frame_time
|
||||
if elapsed < frame_interval:
|
||||
await asyncio.sleep((frame_interval - elapsed) / 1000)
|
||||
last_frame_time = time.time() * 1000
|
||||
|
||||
# 检查机器人角色并显示/隐藏视频
|
||||
self._check_role_and_display_video()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user