# tracker-debug **Repository Path**: bluekey2000/tracker-debug ## Basic Information - **Project Name**: tracker-debug - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-26 - **Last Updated**: 2025-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RTSP视频流 + UDP跟踪显示程序 这个Python程序可以同时接收RTSP视频流和UDP数据,并在视频画面上绘制目标跟踪框。 ## 功能特性 - 连接RTSP视频流并实时显示 - 通过UDP接收WKAI_OBJ_MSG结构体数据 - 在视频画面上绘制目标边界框 - 根据任务状态显示不同颜色的框 - 支持暂停/继续功能 - 实时显示系统状态信息 ## 安装依赖 ```bash pip install -r requirements.txt ``` 或者手动安装: ```bash pip install opencv-python numpy ``` ## 使用方法 ### 1. 基本使用 ```bash python rtsp_udp_tracking.py ``` 程序将: - 连接到RTSP流:`rtsp://192.168.1.235:554/live` - 监听UDP端口:`8822`(广播模式) - 显示视频画面和跟踪框 ### 2. 控制按键 - `q`: 退出程序 - `空格`: 暂停/继续播放 ### 3. 自定义配置 如需修改RTSP地址或UDP端口,请编辑 `rtsp_udp_tracking.py` 文件中的相关变量: ```python # RTSP配置 rtsp_url = "rtsp://192.168.1.235:554/live" # 修改为你的RTSP地址 # UDP配置 self.udp_receiver = UDPReceiver(host='0.0.0.0', port=8822) # 修改端口 ``` ## 数据格式 ### UDP接收的WKAI_OBJ_MSG JSON格式 程序现在支持JSON格式的UDP数据传输,与C语言端使用cJSON库生成的格式完全兼容。 **JSON数据结构示例:** ```json { "eTaskType": 1, "eTaskSignal": 1, "eTaskStatus": 1, "stuObjInfo": { "index": 0, "x": 0.25, "y": 0.30, "w": 0.15, "h": 0.20 } } ``` **对应的C语言结构体:** ```c typedef struct WKAI_OBJ_MSG { WKAI_TASK_TYPE eTaskType; // 任务类型 WKAI_TASK_SIGNAL eTaskSignal; // 任务信号 WKAI_TASK_STATUS eTaskStatus; // 任务状态 WKAI_OBJ_INFO stuObjInfo; // 目标信息 } WKAI_OBJ_MSG; typedef struct WKAI_OBJ_INFO { int index; // 目标索引 float x; // 归一化x坐标 (0-1) float y; // 归一化y坐标 (0-1) float w; // 归一化宽度 (0-1) float h; // 归一化高度 (0-1) } WKAI_OBJ_INFO; ``` ### 枚举值 - **任务类型 (WKAI_TASK_TYPE)**: - `NONE_TASK = 0` - 无任务 - `TRACKING_TASK = 1` - 目标跟踪 - `GESTURE_TASK = 2` - 手势识别 - `LAND_TASK = 3` - 二维码降落 - **任务信号 (WKAI_TASK_SIGNAL)**: - `TASK_DISABLE = 0` - 任务结束 - `TASK_ENABLE = 1` - 任务开始 - **任务状态 (WKAI_TASK_STATUS)**: - `GET_SIGNAL = 0` - 获取到信号(青色框) - `IN_TASKING = 1` - 执行任务(绿色框) - `END_TASKING = 2` - 结束任务(红色框) - `SET_TASKING = 3` - 配置任务(红色框) ## 测试 ### 1. UDP数据解析测试 运行测试脚本验证UDP数据解析: ```bash python test_udp_parser.py ``` 这将测试消息的打包和解包功能,确保数据格式正确。 ### 2. UDP发送测试 使用UDP测试发送器模拟C语言端发送数据: ```bash # 发送单个测试消息 python udp_test_sender.py --mode single # 模拟移动目标(默认30秒) python udp_test_sender.py --mode moving --duration 30 # 模拟多个目标 python udp_test_sender.py --mode multiple # 发送到不同主机 python udp_test_sender.py --host 192.168.1.100 --port 8888 ``` ### 3. 完整系统测试 运行完整系统测试(同时启动模拟RTSP播放器和UDP发送器): ```bash python test_system.py ``` 这将显示一个带网格的测试视频窗口,同时在上面绘制从UDP接收到的跟踪框。 ## 显示效果 - **绿色框**: 正在跟踪目标 - **青色框**: 获取到跟踪信号 - **红色框**: 任务结束或其他状态 - **标签**: 显示任务类型和状态 - **ID**: 显示目标索引号 ## 故障排除 ### 1. RTSP连接失败 - 检查RTSP地址是否正确 - 确认网络连接正常 - 检查摄像头是否支持RTSP流 ### 2. UDP数据接收失败 - 确认发送端使用广播地址 `255.255.255.255` - 确认端口为8822 - 检查防火墙设置(允许UDP广播) - 使用测试脚本验证数据格式 - 确认网络支持UDP广播(同一局域网) ### 3. JSON数据解析错误 - 检查JSON格式是否正确 - 确认发送端使用cJSON_Print()或cJSON_PrintUnformatted() - 运行测试脚本验证JSON解析逻辑 - 检查UTF-8编码是否正确 ### 4. 数据格式不匹配 - 确认C语言端发送的是JSON格式而非二进制格式 - 检查JSON字段名称是否匹配 - 验证数据类型转换是否正确 ## 文件说明 - `rtsp_udp_tracking.py` - 主程序 - `test_udp_parser.py` - UDP数据解析测试 - `requirements.txt` - Python依赖包列表 - `README.md` - 使用说明文档 ## 注意事项 1. 确保C语言端发送的数据格式与Python端解析格式一致 2. 归一化坐标范围应为0-1,程序会自动转换为像素坐标 3. 建议在局域网环境下使用以确保稳定的RTSP和UDP连接