47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import yaml
|
|
import uvicorn
|
|
from src.camera_handler import RTSPCamera
|
|
from src.person_detector import PersonDetector
|
|
from src.distance_estimator import DistanceEstimator
|
|
from src.api_server import DistanceAPI, app
|
|
|
|
def load_config():
|
|
with open('config/config.yaml', 'r') as f:
|
|
return yaml.safe_load(f)
|
|
|
|
def main():
|
|
config = load_config()
|
|
|
|
# 初始化摄像头
|
|
camera = RTSPCamera(
|
|
config['camera']['rtsp_url'],
|
|
config['camera']['fps']
|
|
)
|
|
camera.start()
|
|
|
|
# 初始化检测器
|
|
detector = PersonDetector(
|
|
config['model']['person_detection']['model_name'],
|
|
config['model']['person_detection']['confidence_threshold']
|
|
)
|
|
|
|
# 初始化距离估算器
|
|
estimator = DistanceEstimator(
|
|
config['model']['distance_estimation']['focal_length'],
|
|
config['model']['distance_estimation']['sensor_height'],
|
|
config['model']['distance_estimation']['average_person_height']
|
|
)
|
|
|
|
# 初始化API
|
|
distance_api = DistanceAPI(camera, detector, estimator)
|
|
app.distance_api = distance_api
|
|
|
|
# 启动API服务器
|
|
uvicorn.run(
|
|
app,
|
|
host=config['api']['host'],
|
|
port=config['api']['port']
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
main() |