【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)

 【学习资料】

子豪兄的零基础树莓派教程icon-default.png?t=N6B9https://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讲:树莓派新手无痛开机指南【子豪兄的树莓派零基础教程】icon-default.png?t=N6B9https://www.bilibili.com/video/BV1ab411x7aC/?spm_id_from=333.999.0.0 树莓派4b开发之开发环境搭建 - 飞起的小田 - 博客园icon-default.png?t=N6B9https://www.cnblogs.com/tianxxl/p/13587054.html

《树莓派快速上手》 说明 (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/119954291-【超详细 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink - souce算子

水善利万物而不争,处众人之所恶,故几于道💦 目录 1. 从Java的集合中读取数据 2. 从本地文件中读取数据 3. 从HDFS中读取数据 4. 从Socket中读取数据 5. 从Kafka中读取数据 6. 自定义Source 官方文档 - Flink1.13 1. 从Java的集合中读取数据 …

Vue 3:玩一下web前端技术(一)

前言 本章内容为VUE前端环境搭建与相关前端技术讨论。 下一篇文章地址: Vue 3:玩一下web前端技术(二)_Lion King的博客-CSDN博客 一、环境搭建 1. 安装Node.js Vue是基于Node.js的,因此首先需要安装Node.js。官网…

缓存数据同步技术Canal

说明:缓存数据同步,以Redis为例,如何保证从Redis中取出来的数据与MySQL中的一致?在微服务架构下,通常可以用以下两种技术来实现: MQ:在修改数据的同时,发送一个消息修改缓存&#x…

Go Ethereum源码学习笔记 001 Geth Start

Go Ethereum源码学习笔记 前言[Chapter_001] 万物的起点: Geth Start什么是 geth?go-ethereum Codebase 结构 Geth Start前奏: Geth Consolegeth 节点是如何启动的NodeNode的关闭 Ethereum Backend附录 前言 首先读者需要具备Go语言基础,至少要通关菜鸟…

【wsl-windows子系统】安装、启用、禁用以及同时支持docker-desktop和vmware方案

如果你要用docker桌面版,很可能会用到wsl,如果没配置好,很可能wsl镜像会占用C盘很多空间。 前提用管理员身份执行 wsl-windows子系统安装和启用 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper…

06. 管理Docker容器数据

目录 1、前言 2、Docker实现数据管理的方式 2.1、数据卷(Data Volumes) 2.2、数据卷容器(Data Volume Containers) 3、简单示例 3.1、数据卷示例 3.2、数据卷容器示例 1、前言 在生产环境中使用 Docker,一方面…

211. 添加与搜索单词 - 数据结构设计---------------字典树

211. 添加与搜索单词 - 数据结构设计 原题链接:完成情况:解题思路:参考代码: 原题链接: 211. 添加与搜索单词 - 数据结构设计 https://leetcode.cn/problems/design-add-and-search-words-data-structure/descriptio…

Exadata磁盘损坏导致磁盘组无法mount恢复(oracle一体机磁盘组异常恢复)---惜分飞

Oracle Exadata客户,在换盘过程中,cell节点又一块磁盘损坏,导致datac1磁盘组(该磁盘组是normal方式冗余)无法mount Thu Jul 20 22:01:21 2023 SQL> alter diskgroup datac1 mount force NOTE: cache registered group DATAC1 number1 incarn0x0728ad12 NOTE: ca…

【iOS】Frame与Bounds的区别详解

iOS的坐标系 iOS特有的坐标是,是在iOS坐标系的左上角为坐标原点,往右为X正方向,向下为Y正方向。 bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint(起点)和一个CGSiz…

windows使用多账户Git,多远程仓库版本管理

1 清除全局配置 git config --global --list // 看一下是否配置过user.name 和 user.email git config --global --unset user.name // 清除全局用户名 git config --global --unset user.email // 清除全局邮箱 2 本地仓库,每个远程对应的本地仓库目录下执行 $…

求三个球面交点的高效解法

文章目录 一、问题描述二、推导步骤代数法几何法 三、MATLAB代码 一、问题描述 如图,已知三个球面的球心坐标分别为 P 1 ( x 1 , y 1 , z 1 ) , P 2 ( x 2 , y 2 , z 2 ) , P 3 ( x 3 , y 3 , z 3 ) P_1(x_1,y_1,z_1),P_2(x_2,y_2,z_2),P_3(x_3,y_3,z_3) P1​(x1​,…

idea项目依赖全部找不到

目录 1,出错现象2,解决3,其他尝试 1,出错现象 很久没打开的Java项目,打开之后大部分依赖都找不到,出现了所有的含有import语句的文件都会报错和一些注解报红报错,但pom文件中改依赖是确实被引入…

深度学习实践——循环神经网络实践

系列实验 深度学习实践——卷积神经网络实践:裂缝识别 深度学习实践——循环神经网络实践 深度学习实践——模型部署优化实践 深度学习实践——模型推理优化练习 代码可见于: 深度学习实践——循环神经网络实践 0 概况1 架构实现1.1 RNN架构1.1.1 RNN架…

管理类联考——写作——论说文——实战篇——标题篇

角度3——4种材料类型、4个立意对象、5种写作态度 老吕的“1342”,一个标题,三句开头,四层结构,两句结尾。 经过审题立意后,我们要根据我们的立意,确定一个主题,这个主题必须通过文章的标题直接…

【手撕】list

系列文章目录 文章目录 系列文章目录前言list_node<T>&#xff08;节点&#xff09;_list_iterator<T, Ref, Ptr>&#xff08;迭代器&#xff09;成员变量构造函数运算符重载 ReverseIterator<Iterator, Ref, Ptr>&#xff08;反向迭代器&#xff09;List<…

python+django+mysql项目实践一(环境准备)

python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 创建Pycharm项目 安装Django 在pycharm文件—设置进行安装 新建Django项目 注意项目创建目录 项目默认目录文件说明: __init__.py asgi.py 【异步接受网络…

机器学习--课后作业--hw1

机器学习(课后作业–hw1) 本篇文章全文参考这篇blog 网上找了很多教程&#xff0c;这个是相对来说清楚的&#xff0c;代码可能是一模一样&#xff0c;只是进行了一些微调&#xff0c;但是一定要理解这个模型具体的处理方法&#xff0c;这个模型我认为最巧妙的它对于数据的处理…

Linux新手小程序——进度条

前言 目录 前言 需要先了解 1.\r和\n 2.缓冲区 一.理解字符的含义&#xff1a; 学习c语言时&#xff0c;我们可以粗略把字符分为可显字符和控制字符. 在按回车换到下一行开始的操作时&#xff0c;实际上是进行了两个操作&#xff1a;1.让光标跳到下一行&#xff08;只…

Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring注解开发 一、注解开发定义Bean二、纯注解开发Bean三…

常见的几种排序

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…