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测试完成!")