【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)
【学习资料】
子豪兄的零基础树莓派教程
https://github.com/TommyZihao/ZihaoTutorialOfRaspberryPi/blob/master/%E7%AC%AC2%E8%AE%B2%EF%BC%9A%E6%A0%91%E8%8E%93%E6%B4%BE%E6%96%B0%E6%89%8B%E6%97%A0%E7%97%9B%E5%BC%80%E6%9C%BA%E6%8C%87%E5%8D%97.md#%E7%83%A7%E5%BD%95%E9%95%9C%E5%83%8F第2讲:树莓派新手无痛开机指南【子豪兄的树莓派零基础教程】
https://www.bilibili.com/video/BV1ab411x7aC/?spm_id_from=333.999.0.0 树莓派4b开发之开发环境搭建 - 飞起的小田 - 博客园
https://www.cnblogs.com/tianxxl/p/13587054.html
基于树莓派4B的OpenCV安装与简单应用(真速通版)
https://blog.csdn.net/black_sneak/article/details/131343797 《树莓派快速上手》 说明 (itprojects.cn)
https://doc.itprojects.cn/0007.zhishi.raspberrypi/02.doc/index.html#/READMEYOLOv8应用及解析
https://www.youtube.com/watch?v=ydC9x1L5SJU目标检测---教你利用yolov5训练自己的目标检测模型
https://blog.csdn.net/didiaopao/article/details/119954291yolov5 训练结果解析
https://blog.csdn.net/sinat_37322535/article/details/117260081?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169080317916800186567366%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169080317916800186567366&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-117260081-null-null.268^v1^koosearch&utm_term=yolov5%E7%BB%93%E6%9E%9C%E5%88%86%E6%9E%90&spm=1018.2226.3001.4450
-【超详细 Python+PyCharm的安装步骤及PyCharm的使用】
(超详细)Python+PyCharm的安装步骤及PyCharm的使用(含快捷键)_pycharm python_IT路上的军哥的博客-CSDN博客
https://blog.csdn.net/JunLeon/article/details/120698578?ops_request_misc=%7B%22request_id%22%3A%22168955879816800222871340%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=168955879816800222871340&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-1-120698578-null-null.268%5Ev1%5Ekoosearch&utm_term=python%E4%B8%8Epycharm&spm=1018.2226.3001.4450
- 【python安装包不要放在python在install选择路径的文件夹里】
否则pycharm在配置python环境时会一直显示重新安装python
-【cmd安装pip和setuptools但pycharm的setting中检测不到这两个工具包,重点在于修改pycharm中python的安装路径(Pycharm cannot set up a python SDK问题解决方法)】Pycharm cannot set up a python SDK问题解决方法_山河不见老的博客-CSDN博客
https://blog.csdn.net/weixin_42212872/article/details/122405569
-【第三方工具包清华大学镜像网站cmd用安装指令(例)】
pip install TensorFlow -i https://pypi.tuna.tsinghua.edu.cn/simple
-【最好用16GB的SD卡下载系统镜像,泪的教训!!!为了配置用户名及密码,最新版本只能用树莓派官方的镜像下载器下载镜像】
-【插上SD卡后红灯常亮,绿灯闪烁;网线绿灯不亮,橘灯常亮;此时需要重启树莓派;即安装好系统后树莓派需要两次开机!!!】
-【同一局域网下查找树莓派ip,在cmd中(管理员身份运行)输入ping -4 raspberrypi.local】
-【VNC连接树莓派出现cannot currently show the desktop问题的解决方法】树莓派默认分辨率模式为Default 720×480,这可能造成VNC显示异常,在putty中用sudo raspi-config修改相关设置,以更换到其他更高的分辨率模式。
-【由于ip分配是随机的,每次更换wifi后vnc都需要重新查找树莓派ip】
-【sudo = superuser do】
-【使用putty重启树莓派时,如果卡了需要手动拔掉充电线;使用reboot重启不需要拔掉充电线】
-【使用camera后,需要在putty中用sodu nano /boot/config.txt删除文件中hdmi_force_hotplug前的#符号,然后ctrl+x再按y回车后退出,拔线重启树莓派;若仍旧不行,则查看分辨率是否又被更改】
-【更换国内镜像源】
注意下载的树莓派系统版本用户是什么,三种用户有三种不同的镜像源,本机用户为aarch64】树莓派换源_code artist的博客-CSDN博客
https://blog.csdn.net/qq_55542305/article/details/125921513?ops_request_misc=%7B%22request_id%22%3A%22168990724916800185836822%22%2C%22scm%22%3A%2220140713.130102334.pc_all.%22%7D&request_id=168990724916800185836822&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-125921513-null-null.142%5Ev90%5Econtrol_2,239%5Ev3%5Econtrol&utm_term=%E6%A0%91%E8%8E%93%E6%B4%BE%E6%9B%B4%E6%8D%A2%E6%BA%90&spm=1018.2226.3001.4187
-【树莓派如果可以正常import cv2但是无法用print(cv2.__version__)语句查看opencv版本,可使用下面这个语句】
import pkg_resources
pkg_resources.get_distribution("opencv-python").version
-【树莓派使用opencv环境安装(实际上不知道到底有没有关系,主要还是跟着老师的教程做了一遍,估计是安装的软件包太多了,出了什么错,以至于把系统都搞崩了一次,重装系统后,按王铭东老师的步骤安装opencv(4.8.0)与numpy(1.25)等皆正常)】
sudo apt-get install libjpeg-dev libatlas-base-dev libjpeg-dev libtiff5-dev libpng12-dev libqtgui4 libqt4-test libjasper-dev (后来安装的部分软件包,不知道安装成功和这些有没有直接关系)
-【一些linux终端的命令】
- 以管理员身份运行终端
sudo -s
- 终端运行桌面上的python代码
cd Desktop/
Python camera.py
- 终端打开桌面上的xxx.txt文件
cd Desktop/xxx.txt/
- 查看文件目录
ll或者ls
- 打开桌面上Data文件夹中的command.txt文件
cd Desktop/Data/
cat command.txt
-【使用OpenCV在树莓派上实时显示摄像头画面的Python代码示例】
import cv2# 创建摄像头对象cap = cv2.VideoCapture(0)#调用摄像头‘0’一般是打开电脑自带摄像头,‘1’是打开外部摄像头# 检查摄像头是否成功打开if not cap.isOpened():print("无法打开摄像头")exit()# 循环读取摄像头画面while True:# 读取一帧图像ret, frame = cap.read()# 检查图像是否成功读取if not ret:print("无法获取图像帧")break# 在窗口中显示图像cv2.imshow("Camera", frame)# 按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头资源cap.release()# 关闭窗口cv2.destroyAllWindows()这段代码首先创建一个摄像头对象 `cap`,然后通过 `cap.read()` 循环读取摄像头画面的每一帧图像。每次读取到图像后,使用 `cv2.imshow()` 在窗口中显示图像。通过按下 'q' 键可以退出循环,最后释放摄像头资源并关闭窗口。请确保已经安装了OpenCV库,并且摄像头设备正确连接并且具有适当的权限。可以将代码保存为 `camera.py`,然后在终端中运行 `python camera.py` 来执行代码。
- 【模型训练,文件修改】
文件目录
- yolov5-master
- data
- GarbageClassify(新建文件夹,存放训练图片和配置路径文件等)
- images
- test(模型训练好后测试时图片)
- train(模型训练时所用的训练图片)
- val(模型训练时所用的验证图片)
- labels
- train(模型训练时所用的训练标签)
- val(模型训练时所用的验证标签)
- GarbageClassify(ymal文件,根据注释修改路径、检测类别等内容)
- .......(固定文件)
- model(固定文件夹)
- runs(新建文件夹,存放训练结果)
- detect(新建文件夹,存放训练结果)
- train(新建文件夹)
- segments(固定文件夹)
- utils(固定文件夹)
- ......一堆固定文件(注意有一个train.py文件,具体看下面)
- train.py
(按照路径提示①把yolov5s.pt预训练模型放在一级文件夹下②查看model文件夹中是否包含yolov5的各种ymal文件③【最重要】data中的yaml文件路径)

- 【labelimg标记】VOC更换成YOLO才能把标记结果的xml转换成txt文件
- 【command命令】树莓派终端cd Desktop/yolo文件夹名称/
训练的命令:(云服务器上)
python3 train.py --weights yolov5s.pt --data data/GarbageClassify/GarbageClassify.yaml --workers 4 --batch-size 2 --epochs 50
(workers同时训练目标;batch训练批次;epochs训练轮次)
识别的命令:(树莓派上)
python3 detect.py --weight best.pt --source data/GarbageClassify/images/test
相关文章:
【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)
【学习资料】 子豪兄的零基础树莓派教程https://github.com/TommyZihao/ZihaoTutorialOfRaspberryPi/blob/master/%E7%AC%AC2%E8%AE%B2%EF%BC%9A%E6%A0%91%E8%8E%93%E6%B4%BE%E6%96%B0%E6%89%8B%E6%97%A0%E7%97%9B%E5%BC%80%E6%9C%BA%E6%8C%87%E5%8D%97.md#%E7%83%A7%E5%BD%95…...
PostgreSQL中如何配置Huge page的数量
在了解如在PG中如何配置大页之前,我们先要对大页进行一定的了解,为什么要配置大页,配置大页的好处有哪些。 我们日常的操作系统中,程序不直接使用内存,而是使用虚拟内存地址来处理内存分配,避免计算的复杂…...
Mysql之binlog日志浅析
一、binlog日志简介 Binlog是MySQL数据库中的二进制日志,用于记录数据库中所有修改操作,包括增删改等操作。binlog以二进制格式保存,可以通过解析binlog文件来查看数据库的操作历史记录。binlog日志可以用于数据恢复、数据备份、数据同步等场…...
js 生成器函数
生成器函数(Generator Function):生成器函数是一种特殊的函数,可以通过yield关键字来暂停和恢复函数的执行,从而实现惰性计算和迭代器的功能。在例子中,我们定义了一个fibonacci生成器函数,它使…...
HCIP OSPF+BGP综合实验
题目 1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中,运行OSPF协议或者BGP协议…...
牛客网Verilog刷题——VL46
牛客网Verilog刷题——VL46 题目解析答案 题目 根据题目提供的双口RAM代码和接口描述,实现同步FIFO,要求FIFO位宽和深度参数化可配置。电路的接口如下图所示。 双口RAM端口说明: 同步FIFO端口说明: 双口RAM代码如下ÿ…...
C/C++开源库推荐
C/C开源库推荐 主要都是平常用到的,包含windows开发、android开发、后台开发、音视频开发、深度学习等等最后还附带几个其他语言开发的比较好的项目 GUI开发 qt 跨平台开发库,内部封装了各种跨平台工具,但是大多数情况下都被用作开发跨平台…...
git常用命令速查表
1.git add -u [<路径>]: 把<路径>中所有跟踪(tracked)文件中被修改过或已删除文件的信息添加到索引库。它不会处理未跟踪(untracked)的文件。省略<路径>表示:即当前目录。 2.git add -a [<路径&…...
让两个文件夹里的图片名字一模一样
为了做测试集,对应数据和真值 import os import datetimeimage_names os.listdir(r\Images) #print(image_names) #print(len(image_names))mask_names os.listdir(rG:\Mask) #print(mask_names) #print(len(mask_names))#根据你提供的文件名排序结果来看,问题可…...
会议OA系统会议管理模块开发思路(layui搭建)
目录 一.为什么要进行开发 1.开发目的 2.项目流程 A.发起会议请求过程 1.首先实现我们的多选下拉框功能! 2.时间组件功能,并且提交我们新增加的会议内容 3.在进行发起会议编码时遇到的问题,BUG 3.1.有点时候js访问不到路径 3.2在增加…...
rsync 远程同步
目录 一、Rsync 简介 二、同步方式 备份的方式 三、常用Rsync命令 四、配置源的两种表达方法 五、配置服务端与客户端的实验 启动 rsync 服务程序 发起端(192.168.158.21) 编辑 六. 发起端(客户端)配置 rsyncinotify c…...
PostgreSQL数据库中,查询时提示表不存在的解决办法
最近遇到一个奇怪的问题,以前从来没有遇到过,在postgres SCHEMA下执行select * from table1语句时,提示表不存在,而实际这个表确是存在的,只不过是在public SCHEMA下。在public SCHEMA下执行这个sql语句是没有问题的。…...
视频传输网安全防护体系
在电脑、手机信息安全保护得到广泛关注和普及的今天,监控摄像头等设备的安全防护仍为大众所忽略,大量视频监控网络的前端设备和数据没有任何保护,完全暴露在互联网中。 前端IP接入设备与后端业务系统处于直连状态,一旦有攻击者或…...
C# Blazor 学习笔记(1):Blazor基础语法,组件化和生命周期
文章目录 前言基础语法路由Page 页面元素条件生成if / elseforforeach 绑定参数绑定(赋值,单向)参数绑定(双向)事件绑定字典绑定 attributes 组件化如何使用Parameter 参数注入使用回调函数组件声明回调组件注入回调组…...
flutter 导出iOS问题2
问题1:The Swift pod FirebaseCoreInternal depends upon GoogleUtilities, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries) 参考 正如上图报错第三方…...
syn报文什么时候会被丢弃?
开启tcp_tw_recycle且在NAT下 tcp_tw_recycle重复利用time_wait sockets,会记录最近的连接时间戳,并丢弃远程主机(PAWS机制)所有不严格大于该时间戳的报文。这意味着如果主机在nat下,那么该nat下所有设备将会受影响 TCP半连接队列满了 在半…...
【C++】开源:Linux端V4L2视频设备库
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux端V4L2视频设备库。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…...
基于数据驱动的多尺度表示的信号去噪统计方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?
文章目录 前言现象原因如何顺序读取推荐阅读 前言 Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 现象 先看…...
伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码
伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓IOS前端纯原生源码, 后端是java源码。...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
