0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python中用Canny边缘检测和霍夫变实现车道线检测方法

麦辣鸡腿堡 来源:CSDN博客 作者:绿竹巷人 2023-11-17 16:55 次阅读

Canny边缘检测+霍夫变换

颜色阈值+图像掩模的方法虽然简单,但是只能应对一些固定颜色车道线的场景。图像像素受光照影响将是一个极其常见的问题。

canny边缘检测+霍夫变换是另外一种简单提取车道线的方法。首先依靠canny提取到原图像的边缘信息,再依靠霍夫变换提取满足要求的直线

importmatplotlib.pyplot as pltimportmatplotlib.image as mpimgimportnumpy as npimportcv2# Readin and grayscale the imageimage= mpimg.imread('test.jpg')gray= cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)# Define a kernel size and apply Gaussian smoothingkernel_size=5blur_gray= cv2.GaussianBlur(gray,(kernel_size, kernel_size),0)# Define our parametersforCanny and applylow_threshold=50high_threshold=150edges= cv2.Canny(blur_gray, low_threshold, high_threshold)# Next we'll create a masked edges image using cv2.fillPoly()mask= np.zeros_like(edges)ignore_mask_color=255# Thistime we are defining a four sided polygon to maskimshape= image.shapevertices= np.array([[(0,imshape[0]),(0,0), (imshape[1],0), (imshape[1],imshape[0])]], dtype=np.int32) #allimage# vertices = np.array([[(0,imshape[0]),(554, 460), (700, 446), (imshape[1],imshape[0])]], dtype=np.int32) # defining a quadrilateral regioncv2.fillPoly(mask, vertices, ignore_mask_color)masked_edges= cv2.bitwise_and(edges, mask)# Define the Hough transform parameters# Make a blank the same size as our image to draw onrho=1# distance resolution inpixels of the Hough gridtheta= np.pi/180# angular resolution in radians of the Hough gridthreshold=1# minimum number of votes (intersections in Hough grid cell)min_line_length=5#minimum number of pixels making up a linemax_line_gap=1#maximum gap in pixels between connectable line segmentsline_image= np.copy(image)*0# creating a blank to draw lineson# Run Hough on edge detected image# Output "lines" is an array containing endpoints of detected line segmentslines= cv2.HoughLinesP(masked_edges, rho, theta, threshold, np.array([]),min_line_length, max_line_gap)# Iterate over the output "lines" and draw lines on a blank imageforline in lines:forx1,y1,x2,y2in line:cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),10)# Create a "color" binary image to combine with line imagecolor_edges= np.dstack((edges, edges, edges))# Draw the lines on the edge imagelines_edges= cv2.addWeighted(color_edges,0.8, line_image,1,0)plt.imshow(lines_edges)plt.show()

canny边缘后,进行霍夫直线检测的结果

图片

在此基础上,增加一个四边形的图像掩模的结果

四边形的设定,写在了代码中,只是进行了注释

图片

总结:

以上两种方法只适合简单的demo,显然并不能识别具备一定曲率的车道线,也无法适应光照不同的情况。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 边缘检测
    +关注

    关注

    0

    文章

    91

    浏览量

    18158
  • Canny
    +关注

    关注

    0

    文章

    14

    浏览量

    9686
  • python
    +关注

    关注

    53

    文章

    4749

    浏览量

    83963
收藏 人收藏

    评论

    相关推荐

    Canny双阈值边缘检测和弱边缘连接详解

    在上一篇FPGA图像处理-- Canny 边缘 检测(一)里介绍了 Canny 边缘 检测的NMS计算,这里
    的头像 发表于11-18 17:07 1812次阅读

    基于Canny边缘检测算子的图像检索算法

    【摘要】:针对依赖传统 Canny算子的基于 边缘的图像检索系统所存在的不足,提出一种基于 Canny 边缘 检测的图像检索算法。使用改进的
    发表于04-24 10:03

    【DragonBoard 410c试用体验】之OpenCV中canny算子边缘检测

    有显著变化的点凸显出来。在具体编程 实现时,可通过计算梯度幅值来确定。 检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的 边缘点,所以应该采用某种
    发表于09-11 23:24

    关于canny算子边缘检测的问题

    本帖最后由 豆吖豆 于 2017-4-4 23:14 编辑 grd=edge(Egray,' canny',0.09,'both');大神门 问一下这个后面的0.09和both什么意思是指的是Egray图像的上下大小还是,另外可以的话能大概说说这个 canny
    发表于04-04 22:27

    图象处理中的哈变换和Canny边缘检测算法

    图象处理中的 边缘 检测------ canny算子
    发表于03-16 06:48

    Labview图像处理——边缘检测

    边缘的灰度值过度较为明显,梯度算子可以得到较好的 边缘 检测结果。 边缘提取其实也是一种滤波,不同的算子有不同的提取效果。比较常用的 方法有三种,S
    发表于12-01 12:16

    基于图像的车道线检测

    基于图像的 车道 线 检测,点击上方“3D视觉工坊”,选择“星标”干货第一时间送达文章导读本文是一篇从零开始做 车道 线
    发表于07-20 06:24

    基于Canny法的红外小目标边缘检测方法

    从红外图像的特点出发,基于 Canny算法进行了目标 边缘 检测。首先,对源图像进行小波分解和重构,对图像进行消噪,抑制噪声对目标提取的影响。然后对消噪后的图像用 Canny算法进
    发表于05-27 15:02 12次下载

    基于Canny边缘检测算子的图像检索算法

    针对依赖传统 Canny算子的基于 边缘的图像检索系统所存在的不足,提出一种基于 Canny 边缘 检测的图像检索算法。使用改进的
    发表于02-11 11:22 28次下载

    基于Canny算法的改进Kirsch人脸边缘检测方法

    针对Kirsch 边缘 检测算法的不足,提出了一种基于 Canny算法改进的Kirsch人脸 边缘 检测算法。该算法先对原始图像用高斯滤波器平滑,计算
    发表于02-23 14:31 10次下载

    基于边界特征的车道标识线检测方法

    为了得到较理想的 车道的标线 边缘,利用 车道边缘特征对 车道图像进行二值化和形态学处理,对 车道区域
    发表于01-13 09:48 54次下载
    基于边界特征的<b class='flag-5'>车道</b>标识<b class='flag-5'>线</b><b class='flag-5'>检测</b><b class='flag-5'>方法</b>

    canny边缘检测

    《OpenCV3编程入门》书本配套源代码 canny 边缘 检测
    发表于06-06 15:20 2次下载

    一套车道线检测系统

    车道 线 检测主要用于驾驶辅助和无人驾驶系统,根据摄像头数量,分为单目和双目两种 检测系统。出于实时性和经济性的考虑,一般采用单目 检测,在对采集过
    发表于01-31 11:26 1次下载
    一套<b class='flag-5'>车道</b><b class='flag-5'>线</b><b class='flag-5'>检测</b>系统

    使用iVeia视觉套件进行Canny边缘检测HLS IP

    iVeia使用嵌入式世界2015中的iVeia视觉套件演示了 Canny 边缘 检测HLS IP
    的头像 发表于11-30 06:41 2801次阅读

    python中用区域掩模实现车道线检测

    如下 我们发现符合阈值的像素既包括了 车道 线,也包含了其他非 车道 线部分。 显然,一个成熟的自动驾驶感知算法,是不可能使用这种 方法的。仅仅依靠颜
    的头像 发表于11-17 16:49 288次阅读
    <b class='flag-5'>python</b><b class='flag-5'>中用</b>区域掩模<b class='flag-5'>实现</b><b class='flag-5'>车道</b><b class='flag-5'>线</b><b class='flag-5'>检测</b>