Files
security-ai-edge/test_edge_run.py

131 lines
3.9 KiB
Python
Raw Normal View History

"""
边缘端运行测试脚本
添加测试摄像头和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)