|
|
1 өдөр өмнө | |
|---|---|---|
| .. | ||
| __pycache__ | 1 өдөр өмнө | |
| config | 1 өдөр өмнө | |
| scripts | 1 өдөр өмнө | |
| README.md | 1 долоо хоног өмнө | |
| calibration.py | 2 өдөр өмнө | |
| camera_group.py | 1 өдөр өмнө | |
| config.py | 1 долоо хоног өмнө | |
| coordinator.py | 2 өдөр өмнө | |
| dahua_sdk.py | 4 өдөр өмнө | |
| dual_stream_manager.py | 3 өдөр өмнө | |
| event_pusher.py | 1 долоо хоног өмнө | |
| llm_service.py | 1 долоо хоног өмнө | |
| main.py | 1 өдөр өмнө | |
| multi_group_system.py | 1 өдөр өмнө | |
| ocr_recognizer.py | 4 өдөр өмнө | |
| paired_image_saver.py | 2 өдөр өмнө | |
| panorama_camera.py | 2 өдөр өмнө | |
| ptz_camera.py | 3 өдөр өмнө | |
| ptz_person_tracker.py | 3 өдөр өмнө | |
| safety_coordinator.py | 2 өдөр өмнө | |
| safety_detector.py | 2 өдөр өмнө | |
| safety_main.py | 2 өдөр өмнө | |
| test_ptz.py | 4 өдөр өмнө | |
| video_lock.py | 3 өдөр өмнө | |
| voice_announcer.py | 1 долоо хоног өмнө | |
本系统实现全景摄像头和可变焦球机的联动抓拍功能:
全景摄像头 球机 识别模块
│ │ │
视频流 ──> 人体检测 ──> 位置计算 ──> PTZ控制 ──> 变焦放大 ──> OCR识别
│
编号结果
dual_camera_system/
├── config.py # 配置文件
├── dahua_sdk.py # 大华SDK Python封装
├── panorama_camera.py # 全景摄像头模块(视频流、人体检测)
├── ptz_camera.py # 球机控制模块(PTZ控制、精确定位)
├── ocr_recognizer.py # OCR识别模块(人体分割、编号识别)
├── coordinator.py # 联动控制器
├── main.py # 主程序
└── README.md # 说明文档
# OpenCV
pip install opencv-python opencv-contrib-python
# YOLO11 (用于人体检测) - Ultralytics最新版本
pip install ultralytics
# llama-server (用于OCR识别)
# 需要单独部署llama-server服务
# 启动命令: llama-server -m PaddleOCR-VL-1.5-GGUF.gguf --port 8111
注意:
编辑 config.py 设置摄像头参数:
# 全景摄像头配置
PANORAMA_CAMERA = {
'ip': '192.168.1.100',
'port': 37777,
'username': 'admin',
'password': 'admin123',
'channel': 0,
}
# 球机配置
PTZ_CAMERA = {
'ip': '192.168.1.101',
'port': 37777,
'username': 'admin',
'password': 'admin123',
'channel': 0,
}
# 启动llama-server (OCR服务)
llama-server -m PaddleOCR-VL-1.5-GGUF.gguf --port 8111
# 启动双摄像头系统
python main.py --panorama-ip 192.168.1.100 --ptz-ip 192.168.1.101
# 指定YOLO11模型大小和OCR配置
python main.py --panorama-ip 192.168.1.100 --ptz-ip 192.168.1.101 \
--model-size s \
--ocr-host localhost --ocr-port 8111
# 交互模式
python main.py --interactive
# 演示模式 (不连接实际摄像头)
python main.py --demo
s - 开始/停止联动r - 获取识别结果t - 手动跟踪 (输入坐标)c - 抓拍快照q - 退出系统启动时会自动进行全景相机与球机的校准:
校准方法 (视觉检测):
校准流程:
移动前全景帧 ────┐
│──> 运动检测 ──> 运动区域中心
移动后全景帧 ────┘
球机抓拍 ────────┐
│──> 特征匹配 ──> 匹配点中心
全景画面 ─────────┘
运动区域 + 匹配点 ──> 加权融合 ──> 最终位置
定时校准:
config.py 中配置校准失败可能原因:
跳过校准:
python main.py --skip-calibration
强制重新校准:
python main.py --force-calibration
使用 YOLO11 模型检测画面中的人体,支持 GPU 加速。
模型尺寸选项:
n (nano) - 最快,精度较低s (small) - 平衡速度和精度m (medium) - 中等l (large) - 高精度x (extra-large) - 最高精度,速度最慢支持大华球机的 PTZ 控制:
启动llama-server示例:
llama-server -m PaddleOCR-VL-1.5-GGUF.gguf --port 8111