carla中lka实现(二)

前言:

首先计算之前检测出来的车道线的中线与输入图像的中线进行计算距离,,并设置不同的阈值对于不同的方向进行相关的调整。

一、车辆中心线

一般而言将摄像头架设在车辆的正中心轴上,所获得的图像的中间线极为车辆的中心。

def CalculateCurvature(binary_image, left_fit, right_fit, l_lane_inds, r_lane_inds):img_size = (binary_image.shape[1], binary_image.shape[0])ploty = np.linspace(0, img_size[1]-1, img_size[1])y_eval = np.max(ploty)# 找到图像中不为零的所有像素点的像素坐标nonzero = binary_image.nonzero()nonzeroy = np.array(nonzero[0])nonzerox = np.array(nonzero[1])# 将这些不为零的像素点坐标分成x,y车道线中leftx = nonzerox[l_lane_inds]lefty = nonzeroy[l_lane_inds] rightx = nonzerox[r_lane_inds]righty = nonzeroy[r_lane_inds]# 将这些像素点对应到世界坐标系中,然后拟合成二次曲线left_fit_cr = np.polyfit(lefty, leftx*xm_per_pix, 2)right_fit_cr = np.polyfit(righty, rightx*xm_per_pix, 2) ## 以下计算本车在车道线中心的位置dist_from_center = 0.0if right_fit is not None:if left_fit is not None:# 摄像头位于图像中间,也是本车的中心camera_pos = img_size[0] / 2# 左右车道线最底端x坐标left_lane_pix = np.polyval(left_fit, binary_image.shape[0])right_lane_pix = np.polyval(right_fit, binary_image.shape[0])# 左右车道线中点x坐标center_of_lane_pix = (left_lane_pix + right_lane_pix) / 2# 摄像头(本车中心)与车道线中心的距离dist_from_center = (camera_pos - center_of_lane_pix) * 3.7/960return dist_from_center

其中返回的dist_from_center是车辆中心线和车道线中心线之间的距离。

二、输出显示距离

在Carla中生成一辆车,并在车辆中心线位置生成一个相机,采集图像信息,首先在车辆中心线上生成一一条线,并显示出来。

直接取图像的size然后设置起点和终点,

使用函数cv2.line就可以,

results = cv2.line(results, start_point, end_point, line_color, thickness)

这个是在图像正中间画上一条线。

然后再在识别出的车道线正中间画上一条线

之前写的函数lane_position会返回左边和右边的车道线的点,

取这两个点然后算平均值,

        lanes_pos = lane_position(img_histogram)l1 = lanes_pos[0][0]r1 = lanes_pos[1][0]p1 = int((l1 + r1) / 2)start_point1 = (p1, 0)end_point1 = (p1, int(height))

最后输出结果:

 红线是图像的中心线,黄线是车道线的中心线。

之后的步骤就是直接用它们两个之间的距离来计算控制车辆左转和右转。

三、车辆控制

在Carla中生成一辆车,中心线上搭载相机,Carla中有两种相机可以选择,一种是普通的RGB相机,另外一种是直接有的语义分割相机,选择语义分割相机简单简单很多。

注意Carla中输出的是图像的格式是png格式,这会有一个问题,是它rgb通道会归一化,所以输出为0.8到1之间,大坑卡了我很久。

原始图像:

通过rgb图像旋转输出的图像:

tmd,4通道图象第四列全部设置为1才行!卡我很久

最好直接把第4列去除,方便!

融合sobel和rgb信息后输出:

 然后选择感兴趣的区域:

 透视变换:

找到点为:

    top_left =[1000,700]top_right = [1374,700]bottom_left = [330,1100]bottom_right =  [2000,1100]# give 4 points to project.proj_top_left = [200,100]proj_top_right = [2200,100]proj_bottom_left  =  [200,1100]proj_bottom_right =  [2200,1100]

 直方图输出:

 滑动窗口输出:

 曲线拟合:

 添加图层蒙版:

未完待续。。。

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

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

相关文章

QGraphicsView 实例3地图浏览器

主要介绍Graphics View框架&#xff0c;实现地图的浏览、放大、缩小&#xff0c;以及显示各个位置的视图、场景和地图坐标 效果图: mapwidget.h #ifndef MAPWIDGET_H #define MAPWIDGET_H #include <QLabel> #include <QMouseEvent> #include <QGraphicsView&…

WSL2 ubuntu子系统OpenCV调用本机摄像头的RTSP视频流做开发测试

文章目录 前言一、Ubuntu安装opencv库二、启动 Windows 本机的 RTSP 视频流下载解压 EasyDarwin查看本机摄像头设备开始推流 三、在ubuntu 终端编写代码创建目录及文件创建CMakeLists.txt文件启动 cmake 配置并构建 四、结果展示启动图形界面在图形界面打开终端找到 rtsp_demo运…

linux系统服务学习(二)linux下yum源配置实战

文章目录 Linux下yum源配置实战一、Linux下软件包的管理1、软件安装方式2、源码安装的配置过程3、详解源码安装的配置过程&#xff08;定制&#xff09;4、详解编译过程5、安装过程6、axel多线程下载软件源码安装7、使用软链接解决command not found8、使用环境变量解决command…

软考A计划-系统集成项目管理工程师-收尾管理

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

中间件(二)dubbo负载均衡介绍

一、负载均衡概述 支持轮询、随机、一致性hash和最小活跃数等。 1、轮询 ① sequences&#xff1a;内部的序列计数器 ② 服务器接口方法权重一样&#xff1a;&#xff08;sequences1&#xff09;%服务器的数量&#xff08;决定调用&#xff09;哪个服务器的服务。 ③ 服务器…

opencv直方图与模板匹配

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 直方图 cv2.calcHist(images,channels,mask,histSize,ran…

Spring中Bean的生命周期以及Bean的单例与多例模式

一. Bean的生命周期 bean的生命周期可以表达为&#xff1a;bean的定义➡bean的初始化➡bean的使用➡bean的销毁 Bean的初始化过程 1&#xff09;通过XML、Java annotation&#xff08;注解&#xff09;以及Java Configuration&#xff08;配置类&#xff09; 等方式加载Bea…

2023+HuggingGPT: Solving AI Tasks with ChatGPT and itsFriends in Hugging Face

摘要&#xff1a; 语言是llm(例如ChatGPT)连接众多AI模型(例如hugs Face)的接口&#xff0c;用于解决复杂的AI任务。在这个概念中&#xff0c;llms作为一个控制器&#xff0c;管理和组织专家模型的合作。LLM首先根据用户请求规划任务列表&#xff0c;然后为每个任务分配专家模…

Unity 鼠标实现对物体的移动、缩放、旋转

文章目录 1. 代码2. 测试场景 1. 代码 using UnityEngine;public class ObjectManipulation : MonoBehaviour {// 缩放比例限制public float MinScale 0.2f;public float MaxScale 3.0f;// 缩放速率private float scaleRate 1f;// 新尺寸private float newScale;// 射线pri…

【Windows系统编程】03.远线程注入ShellCode

shellcode&#xff1a;本质上也是一段普通的代码&#xff0c;只不过特殊的编程手法&#xff0c;可以在任意环境下&#xff0c;不依赖于原有的依赖库执行。 远程线程 #include <iostream> #include <windows.h> #include <TlHelp32.h>int main(){HANDLE hPr…

Educational Codeforces Round 153 (Rated for Div. 2)ABC

Educational Codeforces Round 153 (Rated for Div. 2) 目录 A. Not a Substring题目大意思路核心代码 B. Fancy Coins题目大意思想核心代码 C. Game on Permutation题目大意思想核心代码 A. Not a Substring 题目大意 给定一个只包含“&#xff08;”和“&#xff09;”这两…

react-native-webview RN和html双向通信

rn登录后得到的token需要传递给网页&#xff0c;js获取到的浏览器信息需要传递给rn RN Index.js: import React from react import { WebView } from react-native-webview import useList from ./useListexport default function Index(props) {const { uri, jsCode, webVie…

iPhone删除的照片能恢复吗?不小心误删了照片怎么找回?

iPhone最近删除清空了照片还能恢复吗&#xff1f;大家都知道&#xff0c;照片对于我们来说是承载着美好回忆的一种形式。它记录着我们的平淡生活&#xff0c;也留住了我们的美好瞬间&#xff0c;具有极其重要的纪念价值。 照片不小心误删是一件非常难受的事&#xff0c;那么iP…

Centos7 配置Docker镜像加速器

docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六):docker 网络及数据卷设置 docker实战(七):docker 性质及版本选择 认知升…

CentOS系统环境搭建(五)——Centos7安装maven

centos系统环境搭建专栏&#x1f517;点击跳转 Centos7安装maven 下载压缩包 maven下载官网 解压 压缩包放置到/usr/local tar -xvf apache-maven-3.9.2-bin.tar.gz配置环境变量 vim /etc/profile在最下面追加 MAVEN_HOME/usr/local/apache-maven-3.9.2 export PATH${MAV…

Jenkins 监控dist.zip文件内容发生变化 触发自动部署

为Jenkins添加plugin http://xx:xx/manage 创建一个任务 构建触发器 每3分钟扫描一次&#xff0c;发现指定文件build.zip文件的MD5发生变化后 触发任务

【C++学习手札】一文带你认识C++虚继承​​

食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f340;本文前置知识&#xff1a;C虚函数&#xff08;很重要&#xff0c;内部剖析&#xff09; ♈️今日夜电波&#xff1a;僕らのつづき—柊優花 1:06 ━━━━━━️&#x1f49f;──────── 3:51 …

创建密码库/创建用户帐户/更新 Ansible 库的密钥/ 配置cron作业

目录 创建密码库 创建用户帐户 更新 Ansible 库的密钥 配置cron作业 创建密码库 按照下方所述&#xff0c;创建一个 Ansible 库来存储用户密码&#xff1a; 库名称为 /home/curtis/ansible/locker.yml 库中含有两个变量&#xff0c;名称如下&#xff1a; pw_developer&#…

File inclusion

文章目录 File inclusion(local)File inclusion(remote) File inclusion(local) 随便选择一个点击提交&#xff0c;提交后观察 url ?filename 我们可以使用相对路径../../../../../访问我们想要看到的文件内容 查看windows系统的主机映射文件../../../../Windows/System32/…

ShardingSphere 可观测 SQL 指标监控

ShardingSphere并不负责如何采集、存储以及展示应用性能监控的相关数据&#xff0c;而是将SQL解析与SQL执行这两块数据分片的最核心的相关信息发送至应用性能监控系统&#xff0c;并交由其处理。 换句话说&#xff0c;ShardingSphere仅负责产生具有价值的数据&#xff0c;并通过…