使用 YOLOv8 模型分析摄像头的图像

devtools/2025/2/22 5:51:10/

在 Python 中使用 YOLOv8 模型分析摄像头的图像并进行分类。

1. 安装依赖库

首先,你需要安装 ultralytics 库,它提供了 YOLOv8 的 Python API。可以使用以下命令进行安装:

bash

pip install ultralytics

2. 编写 Python 代码

以下是一个使用 YOLOv8 模型对摄像头图像进行分类的示例代码:

import cv2
from ultralytics import YOLO# 加载预训练的 YOLOv8 分类模型
model = YOLO('yolov8n-cls.pt')# 打开摄像头
cap = cv2.VideoCapture(0)while True:# 读取摄像头的一帧图像ret, frame = cap.read()if not ret:break# 使用 YOLOv8 模型进行分类results = model(frame)# 获取分类结果for r in results:# 获取预测的类别索引predicted_class_index = r.probs.top1# 获取预测类别的名称predicted_class_name = r.names[predicted_class_index]# 获取预测的置信度confidence = r.probs.data[predicted_class_index].item()# 在图像上显示分类结果cv2.putText(frame, f'{predicted_class_name}: {confidence:.2f}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)# 显示处理后的图像cv2.imshow('YOLOv8 Image Classification', frame)# 按 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

3. 代码解释

  • 加载模型:使用 YOLO('yolov8n-cls.pt') 加载预训练的 YOLOv8 分类模型。yolov8n-cls.ptYOLOv8 Nano 版本的分类模型,你也可以根据需要选择其他版本的模型。
  • 打开摄像头:使用 cv2.VideoCapture(0) 打开默认摄像头。
  • 循环读取图像:在 while 循环中不断读取摄像头的图像帧。
  • 进行分类:使用 model(frame) 对每一帧图像进行分类,返回分类结果。
  • 获取分类结果:从分类结果中获取预测的类别索引、类别名称和置信度,并在图像上显示这些信息。
  • 显示图像:使用 cv2.imshow 显示处理后的图像。
  • 退出循环:按 q 键退出循环。
  • 释放资源:循环结束后,释放摄像头并关闭所有窗口。

4. 注意事项

  • 确保你的摄像头可以正常工作,并且可以被系统识别。
  • 如果分类效果不理想,你可以尝试使用更大的模型,如 yolov8s-cls.ptyolov8m-cls.pt 等,但这些模型的计算量会更大,可能需要更强的硬件支持。

http://www.ppmy.cn/devtools/159127.html

相关文章

anolis os 8.9安装jenkins

一、系统版本 # cat /etc/anolis-release Anolis OS release 8.9 二、安装 # dnf install -y epel-release # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.…

npm : 无法加载文件 C:\nvm\v20.11.1\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅

在vscode中运行前端项目时npm run dev 报错:npm : 无法加载文件 C:\nvm\v20.11.1\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1…

键盘启用触摸板-tips

在日常使用笔记本电脑时,我们会遇到没带鼠标,触摸板关闭的情况,通常情况下,我们习惯通过鼠标点击或触摸屏操作来启用触摸板,但其实通过键盘也能轻松实现这一功能。以下就是一种通过键盘操作启用触摸板的方法&#xff0…

Excel中不用复杂公式根据指定X列的数值N复制整行数据N行简单方法

Excel中不用复杂公式根据指定X列的数值N复制整行数据N行简单方法 1、在“数据表”sheet1中对指定X列(假设X列的数字从X2开始到Xn结束)求和,和为Y。 2、在“数据表”sheet1数据列之外新建一列Z,Z1输入表头“匹配数据列”&#xff…

基于Navicat和MySql实现存储过程导出数据库表带字段说明(comment)的csv数据表(含源码)

前言 本需求是在系统开发完成后,系统运行前,有导入部分基础数据的需求,在制作数据表格时,关于字段的说明其实已经在数据库字段的注释内(comment),常用的Navicat导出数据表格其实是只有字段名而…

【个人开发】deepseed+Llama-factory 本地数据多卡Lora微调

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.4 微调脚本 2.3 踩坑经验2.3.1 问题一:ValueError: Undefined dataset xxxx in dataset_info.json.2.3.2 问题二: ValueError: Target…

NoSQL数据库-分类与特点

当前出现了很多不同类型、面向不同应用的No SQL产品,按照所使用的数据结构的类型, 一般可以将NoSQL数据库分为以下4种类型。 1.列式存储数据库 行式数据库即传统的关系型数据库,数据按记录存储,每一条记录的所有属性存储在一行。…

常见的系统架构

1. 单体架构(Monolithic Architecture) 定义 单体架构就像是把所有功能都放在一个大盒子里。所有的代码、业务逻辑和数据处理都在同一个应用程序中。 优点 简单易懂:就像一个大玩具箱,所有东西都在一起,容易管理和开发…