Python 基于 Yolov8 + CPU 实现物体检测

目录

一、开发环境

二、安装 Python 基于 Yolov8 物体检测关联库

2.1 打开命令提示符(cmd)或终端,安装库 

2.2 关联库安装过程遇到的问题 

三、基于 Yolov8 物体检测代码实现(完整)

3.1 Yolov8 物体检测完整代码

3.2 代码首次运行下载 yolov8 模型很慢解决方法

四、Yolov8 + CPU 物体检测效果展示 


一、开发环境

1. PyCharm 【点击下载】

2. Python3.9 【点击下载】

注:最新版本是 Pyhton 3.11.5,大家根据实际情况下载即可。

二、安装 Python 基于 Yolov8 物体检测关联库

ultralytics==8.0.26 

opencv-python==4.5.4.60

cvzone==1.5.6

math

time

2.1 打开命令提示符(cmd)或终端,安装库 

1. 输入以下命令来安装 ultralytics 库: 

pip install ultralytics==8.0.26

2. 输入以下命令来安装 cv2 库(OpenCV):

pip install opencv-python==4.5.4.60 

3. 输入以下命令来安装 cvzone 库:

pip install cvzone==1.5.6 

4. 输入以下命令来安装math库(Python内置库,无需额外安装):

pip install math 

5. time 库是 python 内置库,无需额外安装。 

2.2 关联库安装过程遇到的问题 

问题描述1: 安装 ultralytics 库提示错误:ERROR: Operation cancelled by user

原因分析: 提示这些错误原因是网络环境不好,下载库的速度很慢中途可能断开了,而导致下载失败。

解决方法: 解决方法就是换好一点的环境下载,如果环境无法更换,就不断的重试安装直到成功为止:pip install ultralytics==8.0.26 

问题描述2: ultralytics 等关联库已经安装成功,但是 Pycharm 无法检测得到。

原因分析:

  1. 可能是你的 PyCharm 与 cmd 使用的 Python 解释器不相同;
  2. PyCharm 与 cmd 使用的 Python 解释器相同,但是关联的库并没有添加到 PyCharm 环境里。

解决方法:

1. 首先确保你的 PyCharm 与 cmd 使用的 Python 解释器相同:

2. 将关联的库添加到 PyCharm 环境里:

三、基于 Yolov8 物体检测代码实现(完整

3.1 Yolov8 物体检测完整代码

from ultralytics import YOLO
import cv2
import cvzone
import math
import timecap = cv2.VideoCapture("motorbikes.mp4")  # For Videomodel = YOLO("yolov8n.pt")classNames = ["person", "bicycle", "car", "motorbike", "aeroplane", "bus", "train", "truck", "boat","traffic light", "fire hydrant", "stop sign", "parking meter", "bench", "bird", "cat","dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe", "backpack", "umbrella","handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", "sports ball", "kite", "baseball bat","baseball glove", "skateboard", "surfboard", "tennis racket", "bottle", "wine glass", "cup","fork", "knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange", "broccoli","carrot", "hot dog", "pizza", "donut", "cake", "chair", "sofa", "pottedplant", "bed","diningtable", "toilet", "tvmonitor", "laptop", "mouse", "remote", "keyboard", "cell phone","microwave", "oven", "toaster", "sink", "refrigerator", "book", "clock", "vase", "scissors","teddy bear", "hair drier", "toothbrush"]prev_frame_time = 0
new_frame_time = 0while True:new_frame_time = time.time()success, img = cap.read()results = model(img, stream=True)for r in results:boxes = r.boxesfor box in boxes:# Bounding Boxx1, y1, x2, y2 = box.xyxy[0]x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)w, h = x2 - x1, y2 - y1cvzone.cornerRect(img, (x1, y1, w, h))# Confidenceconf = math.ceil((box.conf[0] * 100)) / 100# Class Namecls = int(box.cls[0])cvzone.putTextRect(img, f'{classNames[cls]} {conf}', (max(0, x1), max(35, y1)), scale=1, thickness=1)fps = 1 / (new_frame_time - prev_frame_time)prev_frame_time = new_frame_timeprint(fps)cv2.imshow("Image", img)cv2.waitKey(1)

3.2 代码首次运行下载 yolov8 模型很慢解决方法

1. 本章物体检测使用的 Yolov8 模型是基于 yolov8n.pt 实现;

2. 代码在首次运行时,会从 Github 上下载相关模型到本地;

3. 如果网络环境不好的情况下,下载速度可能很慢;

4. 因此建议先停止运行代码,然后手动从 Github 将模型下载下来。

yolov8n.pt 模型【点击下载】

四、Yolov8 + CPU 物体检测效果展示 

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

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

相关文章

(二)Python编程环境搭建

本章重点介绍 Python 编程环境的搭建,包括各个平台下 Python 的下载和安装,常见 IDE 的使用,如何运行 Python 程序等。还会亲自带着大家编写并运行第一个 Python 程序,让大家认识一下最简单的 Python 代码。 本章的后半部分还介绍…

web:[ACTF2020 新生赛]Upload

题目 点进页面&#xff0c;是一个文件上传&#xff0c;能联想到getshell 先尝试随便上传一个文件试试 显示上传的文件以jpg、png、gif结尾的图片 构造一句话木马&#xff0c;再将文件后缀改为jpg <?php eval($_POST[1234]);?> 显示上传成功&#xff0c;但是显示无法…

网络子网划分练习

网络子网划分练习 1.背景&#xff1a; 在一个仓储企业网络拓朴结构如图1-所示&#xff0c;该企业占地500亩。有五层办公楼1栋&#xff0c;大型仓库10栋。每栋仓库内、外部配置视频监控16台&#xff0c;共计安装视频监控160台&#xff0c;Switch A、服务器、防火墙、管理机、Rou…

leetcodetop100(29) K 个一组翻转链表

K 个一组翻转链表 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改…

Mysql安装

title: “Mysql安装” createTime: 2022-01-04T20:07:3108:00 updateTime: 2022-01-04T20:07:3108:00 draft: false author: “name” tags: [“mysql”] categories: [“docker”] description: “测试的” docker-mysql安装部署文档 文章目录 title: "Mysql安装" …

用Java打印长方形、平行四边形 、三角形、菱形、空心菱形

今天复习使用嵌套for来完成一些任务&#xff0c;于是想着打印一些图形来练习 思考感悟 长方形 行数 和 每行的星星数嵌套遍历即可 平行四边形 核心&#xff1a;每行空格数总行数-行数 行数空格数132231 三角形 核心&#xff1a;每行星星数2*当前行数-1 行数星星数1123…

唤醒手腕 2023年 B 站课程 Golang 语言详细教程笔记(更新中)

0001、1000集GO语言Flag毒誓 唤醒手腕UP猪Pig目标花费1000集进行讲解Go语言视频学习教程&#xff08;有趣的灵魂&#xff0c;适合小白&#xff0c;不适合巨佬&#xff09;&#xff0c;从2023年3月19日开始&#xff0c;将会一直每天更新&#xff0c;准备在2024年5月1日之前更新…

基于Java实现的民宿预订管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

C语言中柔性数组的讲解与柔性数组的优势

前言:也许你从来没有听说过柔性数组&#xff08;flexible array&#xff09;这个概念&#xff0c;但是它确实是存在的。C99 中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做"柔性数组"成员。 目录标题 柔性数组什么是柔性数组呢&#…

Oracle - 多区间按权重取值逻辑

啰嗦: 其实很早就遇到过类似问题&#xff0c;也设想过&#xff0c;不过一致没实际业务需求&#xff0c;也就耽搁了&#xff1b;最近有业务提到了&#xff0c;和同事讨论&#xff0c;各有想法&#xff0c;所以先把逻辑整理出来&#xff0c;希望有更好更优的解决方案&#xff1b;…

蓝海彤翔亮相2023新疆网络文化节重点项目“新疆动漫节”

9月22日上午&#xff0c;2023新疆网络文化节重点项目“新疆动漫节”&#xff08;以下简称“2023新疆动漫节”&#xff09;在克拉玛依科学技术馆隆重开幕&#xff0c;蓝海彤翔作为国内知名的文化科技产业集团应邀参与此次活动&#xff0c;并在美好新疆e起向未来动漫展映区设置展…

Spring | 基于SpringBoot的多数据源实战 - 使用seata实现多数据源的全局事务管理

Spring | 基于SpringBoot的多数据源实战 - 使用seata实现多数据源的全局事务管理 引言1.1 多数据源的必要性1.2 多数据源的应用场景 实战演示2.1 创建实体类2.2 配置数据源2.3 实现数据源配置类2.4 配置Repository类2.5 运行与验证 事务管理与数据一致性3.1 事务管理3.2 使用Se…