# 基于树莓派、面向电赛的的图像处理python代码
大学生电子设计大赛的训练和参赛过程中,积累的一些图像识别代码。
## 目录
<!-- @import "[TOC]" {cmd="toc" depthFrom=2 depthTo=6 orderedList=false} -->
<!-- code_chunk_output -->
- [目录](#目录)
- [背景](#背景)
- [安装](#安装)
- [使用说明](#使用说明)
- [项目配置](#项目配置)
- [主要功能介绍](#主要功能介绍)
- [功能函数](#功能函数)
- [工具代码](#工具代码)
- [使用示例](#使用示例)
- [相关仓库](#相关仓库)
- [贡献](#贡献)
- [使用许可](#使用许可)
<!-- /code_chunk_output -->
## 背景
电赛训练过程中,由于自己的coding level过于低下、函数和功能过于混乱等原因,导致合作的项目进度非常缓慢。后来随着训练的进行,逐渐将同功能的函数、功能等抽象&整理出来,代码功能也逐渐完善。
也是希望能为有缘人提供哪怕是一点的帮助吧!
## 安装
本项目基于树莓派4B和工业摄像头,需要与上位机进行通信(项目使用STM32进行实践)。
- 树莓派4B需要预装python及相关包。
- opencv
- 个人电脑已验证如下版本可以运行。
- opencv-python==4.9.0.80
- 使用[FastestDet](https://github.com/dog-qiuqiu/FastestDet)进行目标识别,模型需要自行训练并导出ONNX格式。
需要指出的是,若载入ONNX网络时出现类似下面的错误:
```
error: OpenCV(x.x.x) Error: Number of input channels should be multiple of 24 but got 1 in function ‘cv::dnn::ConvolutionLayerImpl::getMemoryShapes’
```
则考虑更换opencv版本(至少我是这么解决的)。
## 使用说明
### 项目配置
- 若运行工具程序or示例代码,则可不变更项目目录,直接运行。
- lib目录必须位于工具代码所在目录下!
- example目录必须与lib目录同级!
- 若使用函数,则仅lib目录内为必要。import即可。
### 主要功能介绍
#### 功能函数
功能函数位于lib目录内。
- `Car.py` [车辆循迹](lib/Car.py)
- 多行采样与距离:引导线到视野中心的距离加权平均。
- 多行采样与角度:拟合得到引导线的方向向量。
- `Command.py` [命令交互](lib/Command.py)
- 参数处理:基于上位机命令,程序运行时的参数调整。
- 指令分析:从上位机所得命令的解析和响应处理(命令格式需要遵循[预设传输协议](lib/command%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE.txt))。
- 数据解析:对上位机发送数据的解析(数据格式需要遵循[预设传输协议](lib/command%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE.txt))。
- 命令生成:将参数、数据等按照指定格式转化为命令,便于向上位机发送。
- `Contours.py` [轮廓处理](lib/Contours.py)
- 轮廓过滤:通过面积阈值过滤所得轮廓。
- 计算轮廓重心。
- 提取(面积)最大轮廓。
- `FastestDet.py` [基于FastestDet神经网络的目标识别](lib/FastestDet.py)
- 读取ONNX格式的模型。
- 输入图片,获得模型输出。
- `Hop.py` [信号跳变检测](lib/Hop.py)
- 信号上升沿&下降沿检测。
- `PiSerial.py` [与上位机串口通信](lib/PiSerial.py)
- 发送信息到串口。
- 从串口读取一次信息。
- 从串口中读取起始符和结束符之间的内容。
- `ROI.py` [感兴趣区域提取](lib/ROI.py)
- 提取or复制图像中的一部分区域(ROI)。
- 判断某一点是否位于ROI内。
- 计算ROI内黑白像素比例。
- `Video.py` [摄像头设置和调整](lib/Video.py)
- 常用颜色分割阈值
- HSV:七色、RGB三通道。
- HLS:黑色。
- 返回摄像头硬件参数。
- 摄像头配置和打开。
- 参数可视化调整:生成带有滑块的视频窗口并将滑块值与参数对应。
实际上,上述功能大部分非常容易实现(寥寥数行代码而已)。部分功能使用过程中我按照自己的习惯将其封装为function or class。更为细致的介绍,请阅读上述py文件。
#### 工具代码
- `AdjectPara.py` [工具:使用带有滑块的窗口对相机参数进行实时调整](AdjectPara.py)
- `GetCoordinate.py` [工具:点击屏幕显示坐标,命令行输出坐标和归一化坐标,按下退格键清零](GetCoordinate.py)
- `GetRange.py` [工具:使用带有滑块的窗口对阈值进行调整(以黑色提取为例)](GetRange.py)
- `GetROI.py` [工具:使用鼠标拖动确定ROI区域,命令行输出坐标和归一化坐标](GetROI.py)
- `GetTransMatrix.py` [工具:通过在屏幕左键单击4个点,生成并获取仿射变换矩阵。手动按下退格键进行重置/清零](GetTransMatrix.py)
### 使用示例
使用示例位于example目录内。
- `testCar.py`[Car.py的示例](example/testCar.py)
- 运行后,输出图像示例和计算输出。
- `testCommand.py`[Command.py和PiSerial.py的示例](example/testCommand.py)
- 假设上位机修改r01,按照接收数据对参数r01进行更新,并将修改后数据回传。
- `testFastestDet.py`[FastestDet.py的示例](example/testFastestDet.py)
- 使用预训练的FastestDet网络对图片中1~8的数字进行目标识别,标出数字位置和置信度。
- `GetCoordinate.py`[Video.py的示例](GetCoordinate.py)
- `testROI.py`[ROI.py的示例](example/testROI.py)
- HSV空间的红色提取
- 划分ROI区域并计算黑白比例、判断点是否位于ROI内。
## 相关仓库
[⚡FastestDet⚡](https://github.com/dog-qiuqiu/FastestDet?tab=readme-ov-file) — 全新设计的超实时Anchor-free目标检测算法
## 贡献
本项目部分程序参考了互联网资料,同时也离不开华中科技大学电工电子科技创新基地的无私帮助。
在此郑重感谢华中科技大学电工基地以及前辈们、同仁们的鼎力相助。
本项目欢迎任何人进行补充。
## 使用许可
[BSD 3-Clause](LICENSE) © CodeCatMeow
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
大学生电子设计大赛的训练和参赛过程中,积累的一些图像识别代码。面向电子设计大赛的视觉处理python程序&工具 树莓派+上位机+USB摄像头 提供巡线、目标识别等函数.zip嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人单片机开发经验充足,深耕嵌入式领域,有任何使用问题欢迎随时与我联系,我会及时为你解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明,项目具体内容可查看下方的资源详情。 【附带帮助】: 若还需要嵌入式物联网单片机相关领域开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步。 【本人专注嵌入式领域】: 有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为你提供帮助,CSDN博客端可私信,为你解惑,欢迎交流。 【建议小白】: 在所有嵌入式开发中硬件部分若不会画PCB/电路,可选择根据引脚定义将其代替为面包板+杜邦线+外设模块的方式,只需轻松简单连线,下载源码烧录进去便可轻松复刻出一样的项目 【适合场景】: 相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多功能
资源推荐
资源详情
资源评论
收起资源包目录
面向电子设计大赛的视觉处理python程序&工具 树莓派+上位机+USB摄像头 提供巡线、目标识别等函数.zip (34个子文件)
Archiell
lib
__init__.py 0B
FastestDet.py 9KB
command传输协议.txt 872B
ROI.py 2KB
PiSerial.py 2KB
Car.py 8KB
Video.py 3KB
Hop.py 650B
Contours.py 2KB
Command.py 4KB
.vscode
settings.json 1KB
tasks.json 239B
launch.json 396B
GetTransMatrix.py 3KB
AdjectPara.py 1KB
LICENSE 1KB
GetRange.py 902B
.gitignore 74B
GetROI.py 2KB
example
testROI.py 986B
testCar.py 649B
testFastestDet.py 481B
testCommand.py 1KB
test
3.png 2KB
6.jpg 35KB
1.png 3KB
5.jpg 25KB
4.png 54KB
7.jpg 58KB
2.png 4KB
models
FastestDet.onnx 978KB
category.names 15B
README.md 6KB
GetCoordinate.py 2KB
共 34 条
- 1
资源评论
阿齐Archie
- 粉丝: 1w+
- 资源: 2303
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功