基于YOLOv8的车辆跟踪与车速计算应用

实现基于YOLOv8的车辆跟踪与车速计算应用涉及以下几个步骤。这里我们假设你已经熟悉Python编程,并且已经安装了所需的库,如YOLOv8、OpenCV等。如果没有,可以先安装这些库:

pip install ultralytics opencv-python numpy opencv-contrib-python

步骤1:安装和配置YOLOv8

首先,安装YOLOv8库并下载预训练模型:

pip install ultralytics

步骤2:加载模型和配置环境

编写Python脚本来加载YOLOv8模型并配置摄像头或视频输入:

import cv2
from ultralytics import YOLO# 加载YOLOv8预训练模型
model = YOLO('yolov8s.pt')# 打开摄像头或视频文件
cap = cv2.VideoCapture(0)  # 使用摄像头
# cap = cv2.VideoCapture('video.mp4')  # 使用视频文件while True:ret, frame = cap.read()if not ret:break# 进行检测results = model(frame)# 处理检测结果for result in results:for box in result.boxes:x1, y1, x2, y2 = box.xyxy.cpu().numpy().astype(int)confidence = box.conf.cpu().numpy()class_id = int(box.cls.cpu().numpy())if class_id == 2:  # 仅检测车辆(类别ID 2 代表车辆)cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)cv2.putText(frame, f'Vehicle: {confidence:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)# 显示结果cv2.imshow('Vehicle Detection', frame)# 按q键退出if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

步骤3:车辆跟踪

为了实现车辆跟踪,可以使用OpenCV的跟踪器,例如KCF、CSRT、MOSSE等。这里使用CSRT跟踪器进行演示:

import cv2
from ultralytics import YOLO# 加载YOLOv8预训练模型
model = YOLO('yolov8s.pt')# 打开摄像头或视频文件
cap = cv2.VideoCapture(0)  # 使用摄像头
# cap = cv2.VideoCapture('video.mp4')  # 使用视频文件trackers = cv2.MultiTracker_create()while True:ret, frame = cap.read()if not ret:break# 进行检测results = model(frame)# 初始化跟踪器for result in results:for box in result.boxes:x1, y1, x2, y2 = box.xyxy.cpu().numpy().astype(int)class_id = int(box.cls.cpu().numpy())if class_id == 2:  # 仅检测车辆tracker = cv2.TrackerCSRT_create()trackers.add(tracker, frame, (x1, y1, x2 - x1, y2 - y1))# 更新跟踪器success,</

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

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

相关文章

记一下 Stream 流操作

Java Stream流 创建流 Collection.stream() / Collection.parallelStream()&#xff1a;从集合生成流&#xff0c;后者为并行流。 List<String> list new ArrayList<>(); Stream<String> stream list.stream(); //获取一个顺序流 Stream<String> …

single_cell_tutorial 教程

介绍 1、AnnData 不是一个单一的表格,而是一个包含多个表格和矩阵的复杂数据结构,用于处理和存储单细胞基因组数据。 AnnData对象包含以下主要部分: var:基因的元数据(Pandas DataFrame格式),包含每个基因的属性信息。例如每个基因的ID、名称、染色体位置等。可以将其…

软件工程-第4章结构化编码和测试

软件的实现阶段&#xff1a;软件编码&#xff0c;单元测试和综合测试。 软件编码是对软件设计的进一步具体化&#xff0c;其任务是将设计表示变换成用程序设计语言编写的程序。 软件测试是软件质量保证的重要手段&#xff0c;要成功开发出高质量的软件产品&#xff0c;必须认…

如何使用 NFTScan NFT API 在 Sei 网络上开发 Web3 应用

Sei Network 是一个专为交易而设计的 Layer 1 区块链。它建立在 Cosmos SDK 上&#xff0c;使用一种称为 Tendermint BFT 的新型共识机制。不仅专攻 DeFi 领域的加密资产交易&#xff0c;更在游戏、社交媒体和 NFTs 等热门 verticals 构建了多功能区块链生态系统。Sei Network …

Day15—热点搜索词统计

一、要求 根据用户上网的搜索记录对每天的热点搜索词进行统计&#xff0c;以了解用户所关心的热点话题。 要求完成&#xff1a;统计每天搜索数量前3名的搜索词&#xff08;同一天中同一用户多次搜索同一个搜索词视为1次&#xff09;。 二、数据 三、配置scala环境 1.下载sca…

网站制作和推广

在当今数字化时代&#xff0c;拥有一个网站对于企业的发展和推广来说是至关重要的。网站既可以作为一个企业的形象展示&#xff0c;也可以作为一个销售渠道&#xff0c;更可以作为一个品牌传播的平台。在本文中&#xff0c;我们将讨论网站制作和推广的重要性&#xff0c;以及一…

08较成功的降低干扰获得较好的波形

08较成功的降低干扰获得较好的波形 波形数据当前数据调整后的数据后续 结语其他以下是废话 试验&#xff0c;本身就是一个摸索的过程&#xff0c;在上一阶段的试验中&#xff0c;我们优化了采集装置&#xff0c;更换了导电性较好的电极。 目前数据美观程度较之前提升了不少&…

ViT:3 Compact Architecture

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-27含并行连结的网络GoogLeNet

27含并行连结的网络GoogLeNet import torch from torch import nn from torch.nn import functional as F import liliPytorch as lp import matplotlib.pyplot as pltclass Inception(nn.Module):# c1--c4是每条路径的输出通道数def __init__(self, in_channels, c1, c2, c3, …

【kaggle数据集无法下载解决办法】

kaggle数据集无法下载的解决办法 当我们在做机器学习相关问题的时候&#xff0c;需要到kaggle网站上下载数据集&#xff0c;但是很多时候速度很慢或者连接超时等问题&#xff0c;此时解决办法如下&#xff1a; 在本地安装Kaggle API包 打开终端输入如下指令&#xff1a; pip i…

vscode使用内置插件断点调试vue2项目

1、首先项目中要开启source-map 在vue.config.js 文件中 module.exports {configureWebpack: {devtool: process.env.NODE_ENV ! "production" ? "source-map" : ,} }2、项目根目录新建.vscode/launch.js文件 {"configurations": [{"ty…

解析JavaScript中逻辑运算符和||的返回值机制

本文主要内容&#xff1a;了解逻辑运算符 &&&#xff08;逻辑与&#xff09;和 ||&#xff08;逻辑或&#xff09;的返回值。 在JavaScript中&#xff0c;逻辑运算符 &&&#xff08;逻辑与&#xff09;和 ||&#xff08;逻辑或&#xff09;的返回值可能并不总…

GPT-5 一年半后发布?迎接AI技术变革

人工智能的快速发展正在深刻改变我们的世界。作为AI技术的前沿代表&#xff0c;OpenAI的GPT系列一直备受关注。最新消息显示&#xff0c;GPT-5将于一年半后发布&#xff0c;并被期望达到“博士级”的智能水平。GPT-5的到来不仅预示着AI在技术上的飞跃&#xff0c;也意味着它将在…

浏览器提升编译速度小技巧(一)- 防病毒排除

1.引言 在Chrome开发过程中&#xff0c;编译速度是影响开发效率的关键因素之一。编译一个大型项目如Chrome&#xff0c;往往需要处理大量的代码文件和依赖库&#xff0c;这个过程既复杂又耗时。因此&#xff0c;任何能够提升编译速度的技巧&#xff0c;都能显著提高开发效率&a…

Dubbo本地调试解决方案

有三种方式:原文链接 本文尝试使用了原作者推荐的第二种方式&#xff0c;在启动本地的服务时加入全局版本号的参数 -Ddubbo.service.versiontest同时需要修改消费者侧API的版本号。 DubboReference(version "test")private IContentPortraitService contentPortra…

TypeError: Cannot set properties of null (setting ‘innerText‘)?

TypeError: Cannot set properties of null (setting innerText) 解释&#xff1a; 这个错误表明你尝试给一个null值的对象设置innerText属性。在JavaScript中&#xff0c;null表示一个空值或者“没有对象”&#xff0c;因此不能对其进行属性设置操作。 解决方法&#xff1a…

微信小程序的媒体组件

微信小程序中的媒体组件主要包括音频组件 和视频组件 &#xff0c;它们可以帮助开发者在小程序中嵌入和播放多媒体内容。以下是对这两个组件的详细介绍&#xff1a; 音频组件 组件用于在小程序中播放音频文件。它支持多种配置选项和事件处理。 属性 src: 音频资源的 URL 地址。…

Python-题库篇-基础

文章目录 Python-题库篇-基础题目001: 在Python中如何实现单例模式。题目002&#xff1a;不使用中间变量&#xff0c;交换两个变量a和b的值。题目003&#xff1a;写一个删除列表中重复元素的函数&#xff0c;要求去重后元素相对位置保持不变。题目004&#xff1a;假设你使用的是…

排序题目:丢失的数字

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 解法四思路和算法代码复杂度分析 解法五预备知识思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;丢失…

osg::Stats类用法及该类源码剖析

1. 概述 Stats是英文单词statistics的简写。顾名思义&#xff0c;就知道osg::Stats是osg中用来统计某些信息的类&#xff0c;如&#xff1a;帧率等&#xff0c;在osg中很多地方用到该类统计某些信息&#xff0c;如下代码是摘自osg的Viewer::eventTraversal()函数&#xff0c;该…