.
├── stm32_project/ # STM32项目目录
│ ├── Inc/ # 头文件目录
│ │ ├── protocol.h # 协议定义
│ │ └── ...
│ ├── Src/ # 源文件目录
│ │ ├── protocol.c # 协议实现
│ │ └── ...
│ └── ...
├── python/ # Python项目目录
│ ├── main.py # 主程序
│ ├── camera.py # 摄像头控制
│ └── ...
└── README.md # 项目说明文档
- 使用OpenCV进行实时物体检测
- 通过串口与STM32通信
- 根据检测结果控制LED指示灯
- 命令格式:单字符命令
- 'A': 检测到物体A
- 'B': 检测到物体B
- 'N': 未检测到物体
- 响应格式:
- "ACK_A\r\n": 确认收到A命令
- "ACK_B\r\n": 确认收到B命令
- "ACK_N\r\n": 确认收到N命令
- "ERR\r\n": 错误响应
-
STM32端:
- 编译并下载程序到STM32开发板
- 确保LED1和LED2正确连接
- 通过UART1与Python程序通信
-
Python端:
- 安装依赖:
pip install -r requirements.txt - 运行程序:
python main.py - 按'q'键退出程序
- 安装依赖:
- STM32CubeIDE
- Python 3.8+
- OpenCV 4.5+
- VSCode
- 确保摄像头正确连接
- 检查串口连接是否正确
- 确保LED引脚配置正确
这是一个基于YOLOv4-tiny的实时物体检测应用程序,使用OpenCV和Python实现。该应用程序可以通过摄像头实时检测物体,并可以保存检测结果。
- 使用YOLOv4-tiny进行实时物体检测
- 支持显示检测框、标签和置信度
- 显示FPS和推理时间等性能指标
- 错误处理和异常恢复机制
- 支持按键保存检测结果
- 支持自动保存检测到物体的帧
- 兼容不同版本的OpenCV
- Python 3.6或更高版本
- OpenCV 4.2或更高版本
- NumPy
- 摄像头或视频输入设备
- 克隆或下载代码库
- 安装所需依赖:
pip install opencv-python numpy
- 下载YOLOv4-tiny模型文件:
yolov4-tiny.weights:预训练权重文件yolov4-tiny.cfg:模型配置文件coco.names.txt:类别名称文件
基本用法:
python object_detection.py
命令行参数:
python object_detection.py --config yolov4-tiny.cfg --weights yolov4-tiny.weights --names coco.names.txt --camera 0 --confidence 0.5 --nms 0.4 --save --output output
参数说明:
--config:YOLO配置文件路径(默认:yolov4-tiny.cfg)--weights:YOLO权重文件路径(默认:yolov4-tiny.weights)--names:类别名称文件路径(默认:coco.names.txt)--camera:摄像头索引(默认:0)--confidence:置信度阈值(默认:0.5)--nms:非极大值抑制阈值(默认:0.4)--save:启用检测结果保存功能--output:输出文件夹(默认:output)
在程序运行时,可以使用以下键盘快捷键:
q:退出程序s:手动保存当前帧(如果启用了保存功能)
应用程序包含多种错误处理机制:
- 检查所需文件是否存在
- 处理摄像头初始化失败的情况
- 处理视频帧获取失败时的重连机制
- 处理物体检测和渲染过程中的异常
- 防止非法的坐标值和数组访问错误
程序在终端上会输出如下信息:
摄像头分辨率: 640x480, FPS: 30.0
已保存检测结果到: output/detection_20230915_153045.jpg
总运行时间: 120.56秒
处理帧数: 3512
平均FPS: 29.13
保存的检测结果: 15张
MIT