赞
踩
算法基于Python3.6实现
Python库
下图是测试结果。
详细流程
图像处理
Candy算法介绍可以参考:https://blog.csdn.net/sc944201630/article/details/81272154
import cv2 import numpy as np import matplotlib.pyplot as plt # 读取图片 def load_image(path, show_img=False): img = cv2.imread(path) if(show_img): cv2.imshow("original img", img) cv2.waitKey(-1) # 按下任意键继续 return img # 对图片进行灰度化,能加速边缘检测 def image_gray(img, show_gray=False, save_gray_img=False): img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) if show_gray: cv2.imshow("gray_image", img_gray) cv2.waitKey(-1) if save_gray_img: cv2.imwrite("./gray_img.jpg", img_gray) return img_gray # canny 算法,边缘检测 # cv2.Canny()参数:分别是输入图片,较小阈值和较大阈值 def canny_edge(img, g_kernel, g_dev, lth, hth, show_img=False, save_img=False): # 高斯滤波 # (g_kernel, g_kernel) 高斯滤波的大小设置 # g_dev: 高斯滤波的标准差,如果设置为0.0即自动生成 # 滤波效果由标准差来决定 img_gaussian = cv2.GaussianBlur(img, (g_kernel, g_kernel), g_dev) img_edge = cv2.Canny(img_gaussian, lth, hth) if save_img: cv2.imwrite("./img_edge.jpg", img_edge) if show_img: cv2.imshow("img_edge", img_edge) cv2.waitKey(-1) return img_edge
我们得到的边缘信息图片如下:
边缘处理
得到边缘信息之后我们需要提取感兴趣候选区域,感兴趣候选区域可通过代码自动提取,但这里我们是手动提取感兴趣候选区域。
# 提取感兴趣候选区域
# 显示图片,获取车道线坐标
# plt.imshow(img)
# plt.show()
# 提取区域,创建掩膜
def get_mask(img, show_img=False
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。