Files
security-ai-edge/test_edge_run.py
16337 0a1d61c1e2 fix: 修复 TensorRT bindings 问题
- tensorrt_engine.py 添加 pycuda 支持
- CUDA 上下文和流管理
- _is_in_working_hours 支持字符串格式
2026-02-02 14:00:21 +08:00

131 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
边缘端运行测试脚本
添加测试摄像头和ROI配置验证系统正常运行
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from config.database import get_sqlite_manager
from datetime import datetime
import random
def setup_test_data():
"""设置测试数据"""
db = get_sqlite_manager()
print("=" * 60)
print("边缘端运行测试 - 数据准备")
print("=" * 60)
camera_id = "test_camera_01"
rtsp_url = "rtsp://admin:admin@172.16.8.35/cam/realmonitor?channel=6&subtype=1"
print(f"\n1. 添加摄像头配置")
print(f" camera_id: {camera_id}")
print(f" rtsp_url: {rtsp_url}")
result = db.save_camera_config(
camera_id=camera_id,
rtsp_url=rtsp_url,
camera_name="测试摄像头-车间入口",
location="车间入口通道",
enabled=True,
status=True
)
print(f" 结果: {'成功' if result else '失败'}")
print(f"\n2. 添加ROI配置随机划分区域")
roi_configs = [
{
"roi_id": f"{camera_id}_roi_01",
"name": "离岗检测区域",
"roi_type": "polygon",
"coordinates": [[100, 50], [300, 50], [300, 200], [100, 200]],
"algorithm_type": "leave_post",
"target_class": "person",
"confirm_on_duty_sec": 10,
"confirm_leave_sec": 30,
"cooldown_sec": 60,
"working_hours": [{"start": "08:00", "end": "18:00"}],
},
{
"roi_id": f"{camera_id}_roi_02",
"name": "入侵检测区域",
"roi_type": "polygon",
"coordinates": [[350, 50], [550, 50], [550, 200], [350, 200]],
"algorithm_type": "intrusion",
"target_class": "person",
"alert_threshold": 3,
"alert_cooldown": 60,
"confirm_on_duty_sec": 10,
"confirm_leave_sec": 10,
"cooldown_sec": 60,
"working_hours": None,
},
]
for roi in roi_configs:
print(f"\n ROI: {roi['name']}")
print(f" - roi_id: {roi['roi_id']}")
print(f" - algorithm_type: {roi['algorithm_type']}")
print(f" - coordinates: {roi['coordinates']}")
result = db.save_roi_config(
roi_id=roi["roi_id"],
camera_id=camera_id,
roi_type=roi["roi_type"],
coordinates=roi["coordinates"],
algorithm_type=roi["algorithm_type"],
target_class=roi["target_class"],
confirm_on_duty_sec=roi["confirm_on_duty_sec"],
confirm_leave_sec=roi["confirm_leave_sec"],
cooldown_sec=roi["cooldown_sec"],
working_hours=str(roi["working_hours"]),
)
print(f" 结果: {'成功' if result else '失败'}")
print("\n" + "=" * 60)
print("测试数据准备完成")
print("=" * 60)
return camera_id, roi_configs
def verify_data():
"""验证数据"""
db = get_sqlite_manager()
print("\n" + "=" * 60)
print("验证数据库中的配置")
print("=" * 60)
cameras = db.get_all_camera_configs()
print(f"\n摄像头数量: {len(cameras)}")
for cam in cameras:
print(f" - {cam['camera_id']}: {cam['camera_name']} ({cam['rtsp_url'][:50]}...)")
rois = db.get_all_roi_configs()
print(f"\nROI数量: {len(rois)}")
for roi in rois:
print(f" - {roi['roi_id']}: {roi['name']} ({roi['algorithm_type']})")
return len(cameras) > 0 and len(rois) > 0
if __name__ == "__main__":
print("\n" + "#" * 60)
print("# 边缘端运行测试 - 数据准备")
print("#" * 60)
setup_test_data()
verify_data()
print("\n" + "#" * 60)
print("# 测试数据准备完成,请运行 main.py 进行推理测试")
print("#" * 60)