智慧交通day03-车道线检测实现08: 在离线视频(非实时)中检测车道线+代码实现

简介: 在前面几节中一步步完成摄像机标定、图像畸变校正、透视变换、提取车道线、检测车道线、计算曲率和偏离距离后,在图像上实现了复杂环境下的车道线检测算法。现在我们将视频转化为图片,然后一帧帧地对视频数据进行处理

学习目标


  • 了解在视频中检测车道线的方法


在前面几节中一步步完成摄像机标定、图像畸变校正、透视变换、提取车道线、检测车道线、计算曲率和偏离距离后,在图像上实现了复杂环境下的车道线检测算法。现在我们将视频转化为图片,然后一帧帧地对视频数据进行处理,然后将车道线检测结果存为另一段视频,代码如下:


首先将前面的方法进行汇总:


def process_image(img):
    # 1.图像去畸变
    undistort_img = img_undistort(img, mtx, dist)
    # 2.车道线检测
    rigin_pipline_img = pipeline(undistort_img)
    # 3.透视变换
    transform_img = img_perspect_transform(rigin_pipline_img, M)
    # 4.精确定位车道线,并拟合
    left_fit, right_fit = cal_line_param(transform_img)
    # 5.绘制车道区域
    result = fill_lane_poly(transform_img, left_fit, right_fit)
    # 6.反投影
    transform_img_inverse = img_perspect_transform(result, M_inverse)
    # 7.计算曲率半径和偏离中心的距离
    transform_img_inverse = cal_radius(transform_img_inverse, left_fit, right_fit)
    transform_img_inverse = cal_center_departure(transform_img_inverse, left_fit, right_fit)
    # 8. 将检测结果与原始图像叠加
    transform_img_inverse = cv2.addWeighted(undistort_img, 1, transform_img_inverse, 0.5, 0)
    return transform_img_inverse


接下来,读取视频并调用上述方法:


clip1 = VideoFileClip("project_video.mp4")
white_clip = clip1.fl_image(process_image)
white_clip.write_videofile("output.mp4", audio=False)


处理结果如下所示:


9fb2625f6c3e4663bb615691db4d4d48.png


总结:


视频中的处理将之前的处理步骤进行综合,完成车道线的检测。

目录
相关文章
|
Windows
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之使用QuaZIP
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之使用QuaZIP
776 0
|
10月前
|
持续交付 Windows
如何使用Sysprep准备Windows系统并使用自动应答
通过Sysprep准备Windows系统,可实现SID重置与系统定制。进入Sysprep后,可安装软件、设置默认桌面文件,并使用Windows SIM创建应答文件以实现自动化部署。适用于系统克隆与批量部署场景。
|
存储 安全 Oracle
【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试
本文探讨了智能合约的安全性问题,特别是重入攻击、预言机操纵、整数溢出和时间戳依赖性等常见漏洞。文章通过实例详细分析了重入攻击的原理和防范措施,展示了如何利用通义灵码辅助检测和修复这些漏洞。此外,文章还介绍了最新的研究成果,如GPTScan工具,该工具通过结合大模型和静态分析技术,提高了智能合约漏洞检测的准确性和效率。最后,文章总结了灵码在智能合约安全领域的应用前景,指出尽管存在一些局限性,但其在检测和预防逻辑漏洞方面仍展现出巨大潜力。
|
消息中间件 存储 NoSQL
消息中间件之MQ详解及四大MQ比较
消息中间件之MQ详解及四大MQ比较
3249 113
消息中间件之MQ详解及四大MQ比较
|
SQL 数据管理 数据库
关系数据库SQL语言简介
关系数据库SQL语言简介 一、SQL语言概述 SQL(Structured Query Language)是一种用于管理和操作关系数据库的语言。它是数据库管理系统(DBMS)的核心组成部分,用于定义、操作和查询数据库中的数据。SQL语言是一种标准化的语言,由美国国家标准局(ANSI)和国际标准化组织(ISO)制定和维护。 SQL语言具有简洁、易学、易用的特点,被广泛应用于各个领域的数据管理和应用开发中。通过SQL语言,用户可以使用简单的语句来完成复杂的数据查询、更新、删除等操作,实现对数据库的全面管理和控制。 SQL语言主要包括以下几个方面的内容: 1. 数据定义语言(DDL):用于
314 0
|
缓存 安全 编译器
C 语言作为经典编程语言,其函数编程技巧对提高代码质量至关重要
C 语言作为经典编程语言,其函数编程技巧对提高代码质量至关重要。本文深入探讨了函数的定义、设计原则、参数传递、返回值处理、调用约定、嵌套与递归调用、优化技巧及常见错误,旨在帮助读者提升编程水平。
254 1
|
XML JSON 数据格式
探索 HTTP 请求的世界:get 和 post 的奥秘(上)
探索 HTTP 请求的世界:get 和 post 的奥秘(上)
探索 HTTP 请求的世界:get 和 post 的奥秘(上)
|
Java Linux 开发工具
jdk(Windows/Mac含M1/M2 Arm原生JDK)安装,附各个版本JDK下载链接
jdk(Windows/Mac含M1/M2 Arm原生JDK)安装,附各个版本JDK下载链接
jdk(Windows/Mac含M1/M2 Arm原生JDK)安装,附各个版本JDK下载链接
|
SQL 关系型数据库 MySQL
【MySQL】MySQL触发器入门宝典,助力MySQL初学者打下基本功
【MySQL】MySQL触发器入门宝典,助力MySQL初学者打下基本功
328 0
|
存储 开发框架 Java
【领域驱动设计】三分钟搞懂领域驱动设计(上)
【领域驱动设计】三分钟搞懂领域驱动设计