wordprees可以做棋类网站吗,wordpress模板如何用,学网站建设课程,杨浦科技网站建设OpenCV 车道检测 前言模型分析车道检测相关链接 前言
如果要检测道路图像中的车道#xff0c;方法之一是利用深度学习的语义分割技术。而在 OpenCV 中解决此问题可以使用边缘检测器。在本节中#xff0c;我们将了解如何使用边缘检测和直线检测识别道路图像中的车道。
模型分… OpenCV 车道检测 前言模型分析车道检测相关链接 前言
如果要检测道路图像中的车道方法之一是利用深度学习的语义分割技术。而在 OpenCV 中解决此问题可以使用边缘检测器。在本节中我们将了解如何使用边缘检测和直线检测识别道路图像中的车道。
模型分析
使用 OpenCV 检测图像中道路边缘的策略如下
检测图像中的对象边缘识别遵循直线且连接的边缘从图像的一端延伸识别出的直线至另一端
车道检测
(1) 导入库并查看示例图像
import cv2, numpy as np
import matplotlib.pyplot as plt,cv2IMG cv2.imread(3.jpeg)
img np.uint8(IMG.copy())图像中包含许多信息但本节中我们只需要检测直线。使用 Canny 边缘检测器可以获取图像边缘当颜色发生剧烈变化时Canny 检测器会将其识别为边缘颜色变化在数学上取决于图像内像素的梯度。两个像素的差异越大像素表示物体边缘的可能性就越高。
(2) 使用 cv2.Canny 边缘检测器获取图像中的边缘
img cv2.blur(img, (5,5))
edges cv2.Canny(img,150,200)
plt.imshow(edges, cmapgray)
plt.show()在以上代码中首先使用 cv2.blur 对原始图像进行模糊处理以 5 x 5 的窗口为单位计算窗口内像素值的平均值并将中心元素替换为周围像素的像素值的平均值。使用 cv2.Canny 方法计算边缘时值 150 和 200 分别表示边缘所对应的最小和最大可能梯度值。如果一个像素两侧的像素差值较大则该像素会被识别为边缘。原始图像和模糊图像的边缘如下所示 从上图中可以看出对原始图像进行模糊处理后边缘会更加清晰合理。识别出边缘后我们介绍如何使用 HoughLines 技术从图像中提取直线。
(3) 使用 cv2.HoughLines 函数识别长度至少为 100 像素的直线
lines cv2.HoughLines(edges,1,np.pi/180,150)其中参数值 100 指定识别直线的长度应至少为 100 像素。得到的每条线都包括与图像左下角的距离和相应的角度通常用极坐标中的 [rho, theta] 表示。
(4) 绘制检测出的直线
lines lines[:,0,:]
for rho,theta in lines:a np.cos(theta)b np.sin(theta)x0 a*rhoy0 b*rhox1 int(x0 10000*(-b))y1 int(y0 10000*(a))x2 int(x0 - 10000*(-b))y2 int(y0 - 10000*(a))cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)img cv2.cvtColor(img, cv2.COLOR_BGR2RGB)plt.imshow(img)
plt.show()本节中我们首先通过执行模糊和边缘检测从图像中滤除噪声得到候选车道像素。然后使用 HoughLines 进一步过滤掉小于 100 个像素的直线候选。
相关链接
OpenCV简介与图像处理基础 详解 OpenCV 轮廓检测 OpenCV轮廓检测相关应用 语义分割详解