dongchang/tests/test_api.py
2025-01-13 11:25:23 +08:00

40 lines
1.4 KiB
Python

import asyncio
import numpy as np
from src.api_server import DistanceAPI, Distance
from src.camera_handler import RTSPCamera
from src.person_detector import PersonDetector
from src.distance_estimator import DistanceEstimator
async def test_distance_api():
# 初始化所有组件
camera = RTSPCamera(0) # 使用本地摄像头测试
detector = PersonDetector("yolov8n.pt")
estimator = DistanceEstimator(
focal_length=35,
sensor_height=24,
avg_person_height=1700
)
# 初始化API
api = DistanceAPI(camera, detector, estimator)
print("测试API...")
camera.start()
await asyncio.sleep(2) # 等待摄像头初始化
try:
distances = await api.get_distances()
assert isinstance(distances, list), "返回结果应该是列表"
for distance in distances:
assert isinstance(distance, Distance), "返回结果应该是Distance对象"
assert distance.distance_mm > 0, "距离应该大于0"
assert 0 <= distance.confidence <= 1, "置信度应该在0-1之间"
print(f"检测到 {len(distances)} 个人物的距离")
for i, d in enumerate(distances):
print(f"人物 {i+1}: 距离 = {d.distance_mm:.2f}mm, 置信度 = {d.confidence:.2f}")
finally:
camera.stop()
print("API测试完成!")