修改的车道线检测

1原图

高斯滤波,降噪一下
修改的车道线检测_第1张图片大学校门口

2灰度处理

修改的车道线检测_第2张图片

3边缘化

修改的车道线检测_第3张图片

4 画区域

参数修改在这,至于像素点的位置,你可以把图片保存一张,用画板打开,就能看到了。

regin = np.array([[(200,src.shape[0]),(326,344),
(460,335),(440,src.shape[0])]]) 

修改的车道线检测_第4张图片

5 画线了

这一步东西还是有点多的。
首先把这两根线的像素点分组,分组后在剔除一些差异比较大的点。再然后就寻找这两根线的对应多项式。再然后好像就可以画了。

分组在这

注意,这个要自己根据图片来设定点分类的阈值

lefts =[]
rights =[]
for line  in lines:
    for x1,y1,x2,y2 in line:
        #cv.line(src5,(x1,y1),(x2,y2),linecolor,linewidth)
        #分左右车道
        k = (y2-y1)/(x2-x1)
        if k>-2:
                lefts.append(line)
        else:
                rights.append(line)

筛选

def choose_lines(lines,threhold):     #过滤斜率差别较大的点
        slope =[(y2-y1)/(x2-x1) for line in lines for x1,x2,y1,y2 in line]
        while len(lines) >0:
                mean = np.mean(slope)   #平均斜率
                diff = [abs(s- mean) for s in slope]
                idx = np.argmax(diff) 
                if diff[idx] > threhold:
                        slope.pop(idx)
                        lines.pop(idx)
                else:
                        break
        
        return lines

画。

自己看代码吧。

修改的车道线检测_第5张图片

6 叠加

修改的车道线检测_第6张图片

你可能感兴趣的:(项目(基于Python))