dongchang/main.py

60 lines
1.9 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']
)
# 初始化距离估算器
'''
focal_length_mm : 35 # 焦距(mm)
sensor_width_mm : 23.6 # 传感器宽度(mm)
sensor_height_mm : 15.6 # 传感器高度(mm)
image_width_pixels : 640 # 图像宽度(像素)
image_height_pixels : 640 # 图像高度(像素)
camera_height_mm: 1700 # 摄像头安装高度(mm)
camera_tilt_angle : 15 # 摄像头俯仰角(度)
'''
estimator = DistanceEstimator(
config['model']['distance_estimation']['focal_length_mm'],
config['model']['distance_estimation']['sensor_width_mm'],
config['model']['distance_estimation']['sensor_height_mm'],
config['model']['distance_estimation']['image_width_pixels'],
config['model']['distance_estimation']['image_height_pixels'],
config['model']['distance_estimation']['camera_height_mm'],
config['model']['distance_estimation']['camera_tilt_angle']
)
# 初始化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()