PINet车道线检测+YOLOv8视频目标检测

前言:       

本文主要目的是实现在PINet车道线检测的代码中嵌入YOLOv8的目标检测模块,具体效果如图所示:

         在学习和使用YOLOv8进行目标检测时,感觉可以和最近研究的车道线检测项目结合起来,形成一套如上图所示的视频效果。

        其实将车道线检测和目标检测结合可以提供更全面的场景信息。车道线检测提供了关于道路结构和车辆行驶方向的信息,而目标检测可以检测到周围的车辆、行人、交通标志等物体。通过综合这些信息,可以更准确地理解道路环境,提高驾驶系统的感知能力,另外,可以增强驾驶系统的安全性。车道线检测可以帮助车辆保持在正确的车道内,避免偏离道路。目标检测可以检测到潜在的障碍物或危险情况,帮助驾驶系统及时做出反应,例如避让行人或刹车避免与其他车辆相撞。

        在决策支持方面,车道线检测和目标检测的结合可以为驾驶系统提供更多的决策支持。通过分析车道线和周围目标的位置和状态,可以帮助驾驶系统做出更合理的行驶决策,例如选择合适的车道变道时机、保持安全距离等。

相关资料:

PINet车道线检测论文:https://arxiv.org/abs/2002.06604

官方代码:GitHub - koyeongmin/PINet

论文解读:http://t.csdnimg.cn/AOV91

论文复现过程:http://t.csdnimg.cn/Lhz6m

YOLOv8的部署与安装:http://t.csdnimg.cn/YrWNu

具体实现:

        在所有必须的软件、代码、环境准备完成后,将YOLOv8模块(ultralytics-main)导入至PINet车道线检测的代码包中:

注意:要将其放入根目录下,右键将其标记为Sources Root,否则会检测不到ultralytics


       新建python package,命名:YOLO_predicted_video,在其package下新建python文件,命名:YOLO_pre.py

        导入所需要的包,写入以下代码:

import cv2
from ultralytics import YOLO#############################
## YOLO
############################
def yolo_pre():yolo=YOLO('./yolov8n.pt')video_path='C:\\Users\\25055\\Desktop\\测试2.mp4'cap = cv2.VideoCapture(video_path)  # 创建一个 VideoCapture 对象,用于从视频文件中读取帧# 获取视频帧的维度frame_width = int(cap.get(3))frame_height = int(cap.get(4))# 创建VideoWriter对象fourcc = cv2.VideoWriter_fourcc(*'mp4v')out = cv2.VideoWriter('C:\\Users\\25055\Desktop\\output.mp4', fourcc, 20.0, (frame_width, frame_height))while cap.isOpened():status, frame = cap.read()  # 使用 cap.read() 从视频中读取每一帧if not status:breakresult = yolo.predict(source=frame, save=True)result = result[0]anno_frame = result.plot()#cv2.imshow('行人', anno_frame)out.write(anno_frame)# 注释的框架是通过调用 result.plot() 获得的,它会在框架上绘制边界框和标签。# 带注释的框架使用 cv2.imshow() 窗口名称“行人”显示。#if cv2.waitKey(1) & 0xFF == ord('q'):#breakcap.release()cv2.destroyAllWindows()print('yolo识别完成')video_yolo_path='C:\\Users\\25055\Desktop\\output.mp4'return video_yolo_path

其中:

video_path='C:\\Users\\25055\\Desktop\\测试2.mp4'

便是我们要检测的视频,存放在桌面中。

out = cv2.VideoWriter('C:\\Users\\25055\Desktop\\output.mp4', fourcc, 20.0, (frame_width, frame_height))

将YOLO所检测完成的视频结果存储至'C:\\Users\\25055\Desktop\\output.mp4'文件中。

打开test.py文件:导入YOLO_pre中的yolo_pre模块

在开始测试之后输入以下代码:

video_path=yolo_pre()

 在Parameters.py文件中,将mode设置为1。

test.py文件的cv2.VideoCapture()设置为video_path,即:

    elif p.mode == 1: # 使用视频文件对模型进行测试cap = cv2.VideoCapture(video_path)#通过cv2.VideoCapture打开视频文件while(cap.isOpened()):ret, frame = cap.read()if not ret:breakprevTime = time.time()frame = cv2.resize(frame, (512,256))/255.0frame = np.rollaxis(frame, axis=2, start=0)_, _, ti = test(lane_agent, np.array([frame])) ##循环读取每一帧图像,将图像进行预处理后传递给test函数进行测试,并显示测试结果。#计算FPScurTime = time.time()sec = curTime - prevTimefps = 1/(sec)s = "FPS : "+ str(fps)##同时,计算帧率并在图像上显示。cv2.putText(ti[0], s, (0, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0))#FPS展示cv2.imshow('frame',ti[0])if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()

右键运行test.py文件。

结果展示:

yolo开始进行目标检测:

 yolo检测结果:

开始进行车道线检测任务:

检测结果:

 

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

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

相关文章

c++的学习之路:4、入门(3)

摘要 本章将介绍一下auto、for和指针空值,文章末附上入门的所有代码。 目录 摘要 一、auto 二、for 三、指针空值 四、代码 五、思维导图 一、auto 这个关键字是c提出的,可以自动识别变量的类型,可以看出下方图片,auto自…

亚马逊、沃尔玛自养号测评技术解析:如何降低潜在风险

亚马逊等电商平台在全球范围内迅速扩张,竞争愈发激烈。为提升产品排名和销量,众多卖家选择采用自养号测评的策略。然而,自养号测评技术并非完美无缺,它存在着一定的技术局限性。由于缺乏对自养号原理及底层环境搭建的深入理解&…

三个截然不同的爆仓案例,值得每个交易者反思

用铜做镜子,能端正衣冠;以史为镜可知兴;以人为镜能明得与失得。”做买卖,需要以他人的得失为鉴,这样才会不断地反思持续地提高持续地进步。在这篇文章中,我们会分享3个完全不同的爆仓案例给交易者一个“与明…

ELK-Kibana 部署

目录 一、在 node1 节点上操作 1.1.安装 Kibana 1.2.设置 Kibana 的主配置文件 1.3.启动 Kibana 服务 1.4.验证 Kibana 1.5.将 Apache 服务器的日志(访问的、错误的)添加到 ES 并通过 Kibana 显示 1.6. 浏览器访问 二、部署FilebeatELK&…

密码学 | 椭圆曲线 ECC 密码学入门(三)

目录 7 这一切意味着什么? 8 椭圆曲线密码学的应用 9 椭圆曲线密码学的缺点 10 展望未来 ⚠️ 原文地址:A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography ⚠️ 写在前面:本文属搬运博客,自己留…

特氟龙(PFA)实验室器具有哪些?

PFA 是被称为塑料王,具有出众的化学耐受性,并且可在出色的温度范围内执行工作。 PFA 呈半透明,柔韧,并且由于其高密度重量有点重。PFA 具有惰性和低粘合性,溶出物和痕量金属含量较低。它具有较宽的含氟聚合物温度范围…

【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解

目录 🌞1. 整体思路 🌞2. 准备内容 🌼2.1 配置.c文件 🌼2.2 准备测试程序 🌼2.3 GDB调试基础 🌞3. GDB调试四层二叉树 🌼3.1 测试程序分析 🌼3.2 gdb分析 🌻1. …

这些矛盾点不搞清楚,私域怎么做得起来!

最近不少人都在问,私域做不起来怎么办?有很多企业砸了不少钱,有些还做了好几年,依旧没有起色。 有些企业觉得私域做不起来的阻碍有运营方面的原因,比如文案写不好,社群不知道怎么管理;有团队方…

Apache Zeppelin 命令执行漏洞复现(CVE-2024-31861)

0x01 产品简介 Apache Zeppelin 是一个让交互式数据分析变得可行的基于网页的开源框架,Zeppelin提供了数据分析、数据可视化等功能, 0x02 漏洞概述 Apache Zeppelin 中代码生成控制不当(“代码注入”)漏洞。攻击者可以使用 She…

Vitis HLS 学习笔记--硬件卷积加速 Filter2DKernel

目录 加速器功能 Window2D()函数 实现代码 变量解释 ARRAY_PARTITION DEPENDENCE LOOP_TRIPCOUNT ramp_up 更新Window 更新LineBuffer Filter2D()函数 ARRAY_PARTITION window_stream.read() 计算过程 备注 加速器功能 硬件加速单元从全局内存(DDR&a…

Centos7配置IP地址

1、找到网卡名字 使用root用户登陆,输入命令 ifconfig 2、打开配置文件 输入命令,打开配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 3、添加IP地址 3.1修改BOOTPROTO 将“BOOTPROTOdhcp” 改为 “BOOTPROTOstatic” 3.2添加IP地址 在配…

D365开发-在视图按钮的js里,引用别的js里的公共方法

公共方法写法: "use strict"; var JJMC window.JJMC || {}; JJMC.SamMCommon JJMC.SamMCommon || {}; (function () { this.cloneRecord function (excludeAttrbuteNames){ / } }).call(JJMC.SamMCommon); 然后在需要调方法的command里面,之…

解读《算者生存:商业分析的方法与实践》:构建企业经营分析框架的必备指南

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

Java:定时任务无法正常执行(scheduling + ShedLock)

目录 一、场景二、代码片段三、排查四、原因五、解决 一、场景 1、使用定时任务(scheduling) 分布式锁(ShedLock)定期执行一段代码 2、configureTasks()对于任务执行周期的更新是正常的 3、但任务方法无法被执行 二、代码片段 三、排查 1、确认Trigger没有问题 2、查看red…

水封式防暴器 我的真诚一直不变

天气在变,服务不变,季节在变,态度不变,时代在变,品质不变,不管世界怎么变,我的真诚一直不变! 一、水封式防暴器的用途介绍: FBQ型系列水封式防暴器是安装在抽放瓦斯泵吸…

如何在没有备份的情况下恢复iPhone数据

想要找到没有备份的最佳iPhone数据恢复软件吗?本文介绍了一款专业的iPhone数据恢复软件,无需备份即可恢复iPhone数据。 许多iPhone用户可能对上述情况并不陌生。丢失重要的iPhone数据确实是一件令人沮丧的事情。通常,检索iPhone数据的最佳方…

第九届少儿模特明星盛典 全球赛首席体验官『魏堃明』精彩回顾

2024年1月30日-2月1日,魔都上海迎来了龙年第一场“少儿形体行业美育春晚”!由IPA模特委员会主办的第九届少儿模特明星盛典全球总决赛圆满收官!近2000名少儿模特选手从五湖四海而来,决战寒假这场高水准,高人气&#xff…

Golang 开发实战day10 - Maps

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🐍 Python工具 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 G…

[leetcode] 53. 最大子数组和

文章目录 题目描述解题方法分治法java代码复杂度分析 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1: 输…

如何应对MySQL单表数据量过大:垂直分表与水平分表策略解析

话接上回,单表最大数据建议两千万,那如果开发一个项目,预计注册量达到一个亿怎么办。 单表内放这么多数据,MYSQL底层B树的层级结构就可能会变得很高,磁盘io次数变多,性能会大幅度降低。所以考虑数据库分表…