Python----计算机视觉处理(Opencv:道路检测之道路透视变换)

news2025/4/2 6:13:41

一、透视变换

        对于道路检测来说,为了方便车辆进行行驶,道路上都有车道线,为了更加方便对道路线进行检测,首先我们要把到路线平视图转变为俯视图,以便后期处理更加方便,如下图所示,该为虚拟场景的驾驶车辆第一人称图。

我们要把这张图片装变为第三人称视角的俯瞰图,如下图所示 

二、操作方式

   

导入模块

import cv2
import numpy as np

输入图像

img=cv2.imread('15.png')

 绘出透视变换线

height,width,_=img.shape
cv2.line(img,(width//2-75,height//2),(0,height),(0,0,255),2)
cv2.line(img,(width//2+

 透视变换矩阵

src=np.float32(
    [
        [width//2-75,height//2],
        [width//2+100,height//2],
        [0,height],
        [width,height]
    ]
)
dst=np.float32(
    [
        [0,0],
        [width,0],
        [0,height],
        [width,height]
    ]
)
M=cv2.getPerspectiveTransform(src,dst)

 进行透视变换

img_wrp=cv2.warpPerspective(img,M,(width,height),flags=cv2.INTER_LINEAR)

 输出图像

cv2.imshow('img',img)
cv2.imshow('img_wrp',img_wrp)
cv2.waitKey(0)

 完整代码

import cv2       
import numpy as np  


img = cv2.imread('15.png')  

# 获取图像的高度和宽度  
height, width, _ = img.shape  

# 在图像中心绘制一条红色直线,起点为 (width//2-75, height//2),终点为 (0, height)  
cv2.line(img, (width // 2 - 75, height // 2), (0, height), (0, 0, 255), 2)  

# 在图像中心绘制另一条红色直线,起点为 (width//2+100, height//2),终点为 (width, height)  
cv2.line(img, (width // 2 + 100, height // 2), (width, height), (0, 0, 255), 2)  

# 定义源点坐标,进行透视变换的起始位置  
src = np.float32(  
    [  
        [width // 2 - 75, height // 2],  # 线段起点  
        [width // 2 + 100, height // 2],  # 线段终点  
        [0, height],                        # 左下角坐标  
        [width, height]                     # 右下角坐标  
    ]  
)  

# 定义目标点坐标,透视变换后的目标位置  
dst = np.float32(  
    [  
        [0, 0],        # 目标左上角点  
        [width, 0],    # 目标右上角点  
        [0, height],   # 目标左下角点  
        [width, height] # 目标右下角点  
    ]  
)  

# 计算透视变换矩阵 M  
M = cv2.getPerspectiveTransform(src, dst)  

# 应用透视变换,生成新图像 img_wrp  
img_wrp = cv2.warpPerspective(img, M, (width, height), flags=cv2.INTER_LINEAR)  

# 显示原图和透视变换后的图像  
cv2.imshow('img', img)       
cv2.imshow('img_wrp', img_wrp)   

# 等待按键后关闭窗口  
cv2.waitKey(0)                 

三、库函数

3.1、line()

cv.line(	img, pt1, pt2, color[, thickness[, lineType[, shift]]]	) ->	IMG
方法描述
img该图像
pt1线段的第一个点
pt2线段的第二个点
color线条颜色
thickness线条粗细
lineType线路的类型。请参见 LineTypes
shift点坐标中的小数位数

3.2、getPerspectiveTransform()

cv.getPerspectiveTransform(	src, dst[, solveMethod]	) ->	retval
方法描述
src源图像中四边形顶点的坐标。
dst目标图像中相应四边形顶点的坐标。
solveMethod传递给 cv::solve 的方法 (DecompTypes)

3.3、warpPerspective()

cv.warpPerspective(	src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]	) ->	DST
方法描述
src输入图像
dst输出图像,其大小为 dsize 且类型与 src 相同
M3*3变换矩阵
dsize输出图像的大小
flags插值方法(INTER_LINEAR 或 INTER_NEAREST)和可选标志 WARP_INVERSE_MAP 的组合,将 M 设置为逆变换
borderMode像素外插法(BORDER_CONSTANT 或 BORDER_REPLICATE)。
borderValue在恒定边界的情况下使用的值;默认情况下,它等于 0

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

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

相关文章

为什么 ThreadLocalMap 的 key 是弱引用 value是强引用

问题一:为什么 ThreadLocalMap 的 key 是弱引用? 【假设 Entry 的 key 是对 ThreadLocal 对象的强引用】:这个 Entry 又持有 ThreadLocal 对象和 value 对象的强引用。如果在其他地方都没有对这个 ThreadLocla 对象的引用了、然后在使用 Thr…

AI 能解开内容的「不可能三角」吗?

3月21日,以“‘AI商业’进化论”为主题的行业峰会在中欧国际工商学院上海校区成功举行,并发布人工智能与商业创新白皮书。本次活动由中欧国际工商学院与特赞科技Tezign联合主办,中欧特赞人工智能与商业创新研究基金承办,中欧AI与营…

计算机网络 OSI参考模型

目录 OSS七层 OSI通信过程1 OSI通信过程2 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 OSS七层 OSI通信过程1 OSI通信过程2 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层

探索新一代大模型代理(LLM agent)及其架构

在人工智能大模型(AI)的浪潮中,2023年我们见证了检索增强生成(Retrieval Augmented Generation, RAG)的兴起,而2024年则无疑成为了“代理”agent的元年。各大AI企业纷纷投身于聊天机器人代理的研发中,工具如MultiOn通过与外部网站的连接实现了…

AI应用案例(1)——智能工牌和会话质检

今天开辟一个新的模块,自己平时也搜集一些典型的行业应用案例,不如就记录到C站,同时和大家也是个分享好了。 今天分享的企业和产品,是循环智能的智能工牌。 这个产品应用场景清晰,针对的行业痛点合理,解决…

HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式

HMTLJSCSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式(可以穿墙死不了,从左边进去可以从右边出来),显示当前分数和最高分,吃到的球颜色可以叠加到蛇身体上 为了适配手机端…

内网渗透——红日靶场二

目录 一、前期准备 DC机配置 PC机配置 WEB机配置 将PC机和WEB机的IP地址进行更改 开启WEB服务 二、外网探测 1.使用nmap扫描 2.目录扫描 3.漏洞扫描 (1)CVE-2017-3506(getshell失败) (2)CVE-201…

【Unity】处理文字显示不全的问题

1.选中字体文件,检查 MultiAtlasTeextures 是否勾选,未勾选的话,先勾选保存后查看是否显示正常 2.勾选后未正常显示,则在搜索框中输入未显示的文本,确认字体图集是否包含该文本,然后点击Update Atlas Textu…

汽车诊断开发入门以及OBD检测

一、OBD 概述 定义:OBD 即 On - Board Diagnostics,车载自动诊断系统。它能实时监测车辆各项系统和部件状态,以此帮助诊断故障并预警。设计初衷与发展:最初设计目的是控制汽车尾气排放,确保符合环境标准。随着技术进步…

Ingredient-oriented Multi-Degradation Learning for Image Restoration论文阅读

摘要:重点在于关联多个任务本质的联系。 不同恢复任务的关联性很重要。 揭示退化现象的内在机理联系很有意义。 多合一的方法能在单一模型中处理多种退化问题,可扩展性较差。 成分导向范式挖掘不同图像退化现象背后的物理规律或特征模式。 成分导向退化重…

java项目挂机自动重启操作指南

前段时间有个伙伴问我,java项目挂机怎么自动重启。。。。。。今天就写一个 .sh脚本来实现应用挂机的自动重启功能 #!/bin/bash # 查询mita的进程个数 countps -ef | grep mita.jar | grep -v "grep" | wc -l # echo $count nowtimedate "%Y-%m-%d %H…

Vue el-table-column内el-tooltip识别换行符 \n

结构&#xff1a; <el-table-column prop"callSummary" width"300" label"摘要"><template slot-scope"scope"><el-tooltip class"item" effect"dark" placement"top"><div v-ht…

【C++指南】一文总结C++二叉搜索树

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C二叉搜索树的实现。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给…

【报告】内镜视频图像分析Foundation Model

来源&#xff1a;医疗基础模型 仅供个人学习&#xff0c;侵权请联系我删除

使用HTML5和CSS3实现炫酷的3D立方体动画

使用HTML5和CSS3实现炫酷的3D立方体动画 项目介绍 本文将详细介绍如何使用HTML5和CSS3技术实现一个交互式3D立方体动画。这个项目不仅展示了现代Web前端技术的强大功能&#xff0c;还能帮助读者深入理解CSS3的3D变换和动画特性。 技术栈 HTML5CSS3 (transform-style, persp…

MySQL数据库和表的操作之SQL语句

&#x1f3af; 本文专栏&#xff1a;MySQL深入浅出 &#x1f680; 作者主页&#xff1a;小度爱学习 MySQL数据库和表的操作 关系型数据库&#xff0c;都是遵循SQL语法进行数据查询和管理的。 SQL语句 什么是sql SQL&#xff1a;结构化查询语言(Structured Query Language)&…

多模态大语言模型arxiv论文略读(二)

Identifying the Correlation Between Language Distance and Cross-Lingual Transfer in a Multilingual Representation Space ➡️ 论文标题&#xff1a;Identifying the Correlation Between Language Distance and Cross-Lingual Transfer in a Multilingual Representat…

全局曝光与卷帘曝光

文章目录 曝光方式优点缺点应用场景 为何全局曝光帧率比卷帘曝光方式低 卷帘曝光和全局曝光是CMOS传感器两种常见的曝光模式&#xff0c;以下是二者的对比&#xff1a; 参考&#xff1a;B站优致谱视觉 曝光方式 卷帘曝光&#xff1a;传感器的每一行像素按顺序逐行扫描曝光&…

【一起来学kubernetes】31、Helm使用详解

一、Helm 简介 Helm 是 Kubernetes 的包管理工具&#xff0c;类比 Linux 中的 yum 或 apt&#xff0c;用于简化应用的打包、部署和版本管理。其核心功能包括&#xff1a; Chart 管理&#xff1a;将 Kubernetes 资源&#xff08;Deployment、Service 等&#xff09;打包为可复…

python 常用的6个爬虫第三方库

Python中有非常多用于网络数据采集的库&#xff0c;功能非常强大&#xff0c;有的用于抓取网页&#xff0c;有的用于解析网页&#xff0c;这里介绍6个最常用的库。 1. BeautifulSoup BeautifulSoup是最常用的Python网页解析库之一&#xff0c;可将 HTML 和 XML 文档解析为树形…