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

news2024/11/25 3:44:43

目录

一、开发环境

二、安装 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 time

cap = cv2.VideoCapture("motorbikes.mp4")  # For Video

model = 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 = 0

while True:
    new_frame_time = time.time()
    success, img = cap.read()
    results = model(img, stream=True)
    for r in results:
        boxes = r.boxes
        for box in boxes:
            # Bounding Box
            x1, y1, x2, y2 = box.xyxy[0]
            x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
            w, h = x2 - x1, y2 - y1
            cvzone.cornerRect(img, (x1, y1, w, h))
            # Confidence
            conf = math.ceil((box.conf[0] * 100)) / 100
            # Class Name
            cls = 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_time
    print(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.coloradmin.cn/o/1049789.html

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

相关文章

复杂链表的深度拷贝

给定一个链表,每个结点包含一个额外增加的随机指针,该指针可以指向链表中的任何结点 或空结点。 要求返回这个链表的深度拷贝。 我们想要拷贝这个指针就要考虑到 1.不仅仅拷贝出来的指针next是相同的,rondom也要相同 2.拷贝完后不改变原链表 …

智慧安防视频监控技术+AI智能分析算法助力美好乡村建设

上期我们聊到AI智能视频监控技术如何助力美好乡村建设?的相关方案,收到了很多粉丝的讨论与关注,视频监控只是乡村建设极其基础的一环,基于视频监控平台的AI智能算法,将人工智能融合到安防监控之中,才能让乡…

设计模式3、工厂方法模式 Factory Method

解释说明:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类 抽象工厂(AbstractFactory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法…

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP)

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP) 1、时间:2009-2018年 2、指标: 汇率、入境旅游收入(万美元)、国内旅游收入(亿元&#xff0…

REASUNOS瑞森半导体-MOS管系列在服务器电源上的应用

一、前言 服务器电源是指使用在服务器上的电源(POWER),它和PC电源一样,都是一种开关电源,指能够将交流电转换为服务器所需直流电的电源。 服务器电源按照标准可以分为ATX电源和SSI电源等。ATX标准使用较为普遍&…

DAP-seq在植物转录因子的应用案例助你打通研究思路

众所周知,转录因子 (Transcription Factors, TFs)是指能够以序列特异性方式结合DNA并且调节转录的蛋白质。TF与特异性DNA序列结合调节转录,同时会和其它功能蛋白结合调控下游基因的转录和翻译过程,也会和增强子等其它顺式作用元件结合&#x…

MySQL基础篇-基本sql语句

目录 1.SQL分类 2.SQL-DDL 2.1 数据库操作 查询 创建 删除 使用某个数据库 2.2 数据表操作 创建表 查询表 修改表 3.SQL-DML(增删改) 3.1 插入 3.2 修改 3.3 删除 4.SQL-DQL(查) 4.1 基础查询 4.2 条件查询 4.3 聚合函数查询 4.4 分组查询 4.5 排序查询 …

在EXCEL中构建加载项之创建加载项的目的及规范要求

【分享成果,随喜正能量】一句南无阿弥陀佛,本是释迦牟尼佛所证的无上正等正觉法,洒在娑婆世界的众生海中,只为末世众生能够以信愿之心抓住此救命稻草,要知道今世人此生的处境,可能只剩这道要么极乐要么三涂…

C++之 lambda表达式

lambda表达式 lambda表达式概念lambda表达式语法lambda表达式底层原理 lambda表达式概念 我们在以往需要对某些数据进行排序时,比如一个数组,我们就需要用到sort()函数: int main() {int arr[] { 3,1,2,4,8,7,5,9 };//升序sort(arr, arr …

day36-xml

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

使用 KerasCV YOLOv8 进行物体检测--附完整实现源码

YOLO 目标检测模型已应用于无数应用,从监控系统到自动驾驶车辆。但是,当在 KerasCV 框架下将 YOLOv8 的这种能力配对时会发生什么呢?最近,KerasCV 将著名的 YOLOv8 检测模型集成到其库中。在本文中,我们将探讨如何使用自定义数据集微调 YOLOv8。在此过程中,我们还将涵盖以…

wireshark of tshark tools v3.4.0版本 支持json

tshark(1) Install tshark (Wireshark) Ver.3.4.0 on CentOS7 --It must be "ps", "text", "pdml", "psml" or "fields". TCP 协议中的三次握手和四次挥手是 TCP 连接建立和关闭的过程。 三次握手 客户端向服务器发送 SYN…

Java自学(二)

目录 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 基本类型传参,形参一般不会改变实参。 形参是实参的一份数据拷贝,改变形…

Android12之解封装NuMediaExtractor::setDataSource过程(四十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Python之网络协议

一、网络通信协议 国际标准化组织(ISO,即International Organization for Standardization)定义了网络通信协议的基本框架,被称为OSI(Open System Interconnect,即开放系统互联)模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时…

十五、异常(3)

本章概要 捕获所有异常 多重捕获栈轨迹重新抛出异常精准的重新抛出异常异常链 捕获所有异常 可以只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类 Exception,就可以做到这一点(事实上还有其他的基类,但 Exception 是所…

中秋节快乐

中秋节快乐,国庆节快乐

61从零开始学Java之处理大数字相关的类有哪些?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们知道,在现实世界里,实际上数字是有无穷个的,就比如0和1之间&a…

不同材质地下管线的地质雷达响应特征分析

不同材质地下管线的地质雷达响应特征分析 前言 建立了不同材质地下管线(铸铁管线(PEC)、混凝土管线、PVC/PE管线)的二维模型,进行二维地质雷达正演模拟,分析不同材质管线的地质雷达响应特征。 文章目录 …

[chrome devtools]Sources面板

Source面板左侧部分内容: 下面解释每一项: Page:显示当前页面所有已加载的资源Filesystem:将本地代码拖进来,作为一个workspace,可以直接在这里面编辑代码,然后页面就可以直接看到效果&#xf…