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