python实现简单的车道线检测

描述

python实现简单的车道线检测,本文章将介绍两种简单的方法

  1. 颜色阈值+区域掩模
  2. canny边缘检测+霍夫变换

这两种方法都能实现简单的车道线检测demo,注意仅仅是demo

下面的图片是用到的测试图片

方法1:颜色阈值(Color Selection)+ 区域掩模(Region Masking)

  • 我们可以仅仅通过设置一些RGB通道阈值,来提取车道线。

以下的代码设置了RGB通道阈值为220,大于220的像素将设置为黑色,这样可以将测试图片中的车道线提取出来

效果如下

我们发现符合阈值的像素既包括了车道线,也包含了其他非车道线部分。
显然,一个成熟的自动驾驶感知算法,是不可能使用这种方法的。仅仅依靠颜色,既不科学也不鲁棒。

  • 有一种改进思路是利用图像掩模的方法

假设拍摄图像的前置摄像头安装在汽车上的固定位置,这样车道线将始终出现在图像的相同区域中。我们将设置了一个区域,认为车道线处于该区域内。我们设置了一个三角形的区域,原则上你可以使用其他形状

  • 如果两个方法结合一下,我们就可以得到这样的效果
    python代码如下
import matplotlib.pyplot as pltimport matplotlib.image as mpimgimport numpy as np# Read in the imageimage = mpimg.imread('test.jpg')# Grab the x and y sizes and make two copies of the image# With one copy we'll extract only the pixels that meet our selection,# then we'll paint those pixels red in the original image to see our selection# overlaid on the original.ysize = image.shape[0]xsize = image.shape[1]color_select= np.copy(image)line_image = np.copy(image)# Define our color criteriared_threshold = 220green_threshold = 220blue_threshold = 220rgb_threshold = [red_threshold, green_threshold, blue_threshold]# Define a triangle region of interest (Note: if you run this code,left_bottom = [0, ysize-1]right_bottom = [xsize-1, ysize-1]apex = [650, 400]fit_left = np.polyfit((left_bottom[0], apex[0]), (left_bottom[1], apex[1]), 1)fit_right = np.polyfit((right_bottom[0], apex[0]), (right_bottom[1], apex[1]), 1)fit_bottom = np.polyfit((left_bottom[0], right_bottom[0]), (left_bottom[1], right_bottom[1]), 1)# Mask pixels below the thresholdcolor_thresholds = (image[:,:,0] < rgb_threshold[0]) | \                    (image[:,:,1] < rgb_threshold[1]) | \                    (image[:,:,2] < rgb_threshold[2])# Find the region inside the linesXX, YY = np.meshgrid(np.arange(0, xsize), np.arange(0, ysize))region_thresholds = (YY > (XX*fit_left[0] + fit_left[1])) & \                    (YY > (XX*fit_right[0] + fit_right[1])) & \                    (YY < (XX*fit_bottom[0] + fit_bottom[1]))# Mask color selectioncolor_select[color_thresholds] = [0,0,0]# Find where image is both colored right and in the regionline_image[~color_thresholds & region_thresholds] = [255,0,0]# Display our two output imagesplt.imshow(color_select)plt.imshow(line_image)# uncomment if plot does not displayplt.show()

点击python实现简单的车道线检测 - 古月居 可查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jpa使用Querydsl需要规避的一些坑

在使用Spring Data JPA时,通常会使用Querydsl来构建类型安全的查询。在Querydsl中,为了区分实体类与Querydsl查询类,习惯上会给查询类的前缀添加一个"Q",表示该类是一个查询类。这样做可以有效地避免实体类与查询类之间…

并发学习28--多线程 Fork、Join线程池

概念 使用 import java.util.concurrent.ForkJoinPool; import java.util.concurrent.RecursiveTask;public class TC51 {public static void main(String[] args) {//递归到最小不可分解单元,再进行计算ForkJoinPool pool new ForkJoinPool(5);pool.invoke(new My…

「 典型安全漏洞系列 」14.NoSQL注入漏洞详解

NoSQL注入是一个漏洞,攻击者能够干扰应用程序对NoSQL数据库进行的查询,本文我们将研究如何测试一般的NoSQL漏洞,然后重点研究如何利用MongoDB中的漏洞(MongoDB是最流行的NoSQL数据库)。 1. 什么是NoSQL注入 NoSQL注入…

Langchain入门到实战-第二弹

Langchain入门到实战 Langchain快速入门官网地址Langchain概述Langchain调用大模型更新计划 Langchain快速入门 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://python.langchain.com/Langchain概述 LangChain是一个…

thinkphp 框架封装curl请求

tp6 或者 tp8框架 在框架的app/common.php 文件里加一些方法就可以 app\common.php 在这个文件里加 以下代码 就可以实现基于 curl的请求方法 (记得要开启 php的curl扩展) 查看方法 cmd里输入 php -m if (!function_exists(get)) {/*** 发送get请求* param string $url 请求…

【御控物联】 Java JSON结构转换(2):对象To对象——属性重组

文章目录 一、JSON结构转换是什么?二、案例之《JSON对象 To JSON对象》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换,生成新的JS…

Stable Diffusion之文生图模型训练

1、数据准备 提前准备好一组相关的照片。 在线的图片处理网站 BIRME - Bulk Image Resizing Made Easy 2.0 (Online & Free) 将图片转成统一大小,支持批量处理,效率高 2、生成提示词 进入stable diffusion webui页面 旧版直接使用 train/proproc…

【服务器配置】ngnix环境配置

ngnix环境配置 概述 Nginx(发音为 “engine X”)是一个高性能的 HTTP 和反向代理服务器,也可用作邮件代理服务器。它以其稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。Nginx 被广泛用于提高网站的可扩展性和性能,因为它…

Android使用shape属性绘制边框内渐变色

目录 先上效果图实现方法shape属性介绍代码结果 先上效果图 这是使用AndroidStudio绘制的带有渐变色的边框背景色 实现方法 项目中由于UI设计需求,需要给按钮、控件设置带有背景色效果的。以下是UI效果图。 这里我们使用shape属性来绘制背景效果。 shape属性介…

JS-32-jQuery01-jQuery的引入

一、初识jQuery jQuery是JavaScript世界中使用最广泛的一个库。鉴于它如此流行,又如此好用,所以每一个入门JavaScript的前端工程师都应该了解和学习它。 jQuery是一个优秀的JS函数库。 (对BOM和DOM的封装) jQuery这么流行&#x…

IJKPLAYER源码分析-总体概述

1 前言 前面系列文章,对IJKPLAYER源码所涉及到的各个技术点、模块、关键技术及其实现原理,做了较为详细的梳理。但窃以为那只是微观层面的梳理,还不够完整不够透彻,本文拟尝试从宏观框架架构的视角加以补充。 算是抛砖引玉。 2 架…

idea运行Tomcat,控制台日志的中文乱码

一 版本 win10,idea2022,jdk18,tomcat9 二 问题描述 在idea上可以运行Tomcat。服务器启动后,可以正常访问本地的html文件。但是控制台的Tomcat日志出现了乱码:server与Tomcat Catlina Log两处。 三 无效的解决之道 1 idea的Help选项Edit …

设计模式-模板方法模式(TemplateMethod)

1. 概念 模板方法模式是一种行为设计模式,它在一个方法中定义算法的骨架,将一些步骤延迟到子类中实现。 2. 原理结构图 2.1 图 2.2 角色 抽象类(Abstract Class) 定义抽象的基本操作(Primitive Operations&#xff…

Redis单机版安装保姆级操作手册

Redis安装说明 大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis. 此处选择的Linux版本为CentOS 7. Redis的官方网站地址:https://redis.io/ 单机安装Redis 1.安装…

深度探索:Secure Hash Algorithm(SHA)全景解析

title: 深度探索:Secure Hash Algorithm(SHA)全景解析 date: 2024/4/15 18:33:17 updated: 2024/4/15 18:33:17 tags: SHA安全抗碰撞性算法版本实现细节性能优化发展历史应用案例 密码学中的哈希函数 一、哈希函数的定义 哈希函数是一种数…

Day55 动态规划 part15

Day55 动态规划 part15 392.判断子序列 我的思路: 自己还是只能想到双指针法 解答: class Solution {public boolean isSubsequence(String s, String t) {if(s.length() 0) {return true;}if(s.length() > t.length() || t.length() 0) {return false;}ch…

微信小程序认证指南及注意事项

如何认证小程序? 一、操作步骤 登录小程序后台: https://mp.weixin.qq.com/ (点击前往) 找到设置,基本设置; 在【基本信息】处有备案和认证入口; 点击微信认证的【去认证】; 按照步骤指引一步步填写信息&#xff…

秋招复习笔记——八股文部分:网络基础

TCP/IP 网络模型 应用层 最上层的,也是我们能直接接触到的就是应用层(Application Layer),我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传…

EPSON的RX8900CE适合用于安防摄像头产品

安防摄像头产品可以实现视频监控,运动检测,人脸识别等功能,并且可以支持远程访问,成了用户的“千里眼”。之前安防摄像头的价格比较高,一般比较重要的场合才会使用,目前随着安防摄像头价格逐渐降低&#xf…

简单工厂模式设计实验

实验内容: 楚锋软件公司欲基于Java 语言开发一套图表库,该图表库可以为应用系统提供各种不同外观的图表,例如柱状图、饼状图、折线图等。楚锋软件公司图表库设计人员希望为应用系统开发人员提供一套灵活易用的图表库,而且可以较为…