美文网首页
2020 无人驾驶(5)之车道线检测

2020 无人驾驶(5)之车道线检测

作者: zidea | 来源:发表于2020-09-10 20:11 被阅读0次
tesla_001.jpg
import cv2
import time,sys,math

import numpy as np

import pygame
from pygame.locals import *

import matplotlib.image as mpimg
from utils import *


if __name__ == "__main__":
    cap = cv2.VideoCapture("test.mp4")
    FPS = int(round(cap.get(cv2.CAP_PROP_FPS)))
    FramePerSec = pygame.time.Clock()

    Width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    Height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

    scale_ratio = 2

    pygame.init()
    pygame.display.set_caption('OpenCV Video')
    screen =  pygame.display.set_mode((Width//2,Height//scale_ratio),0,32)

    
    num = 0

    while cap.isOpened():
        ret, frame = cap.read()
        if num == 0:
            T0 = time.time()
        if time.time()-T0 > num*(1./FPS):
            ret, frame = cap.read()

            frame = cv2.resize(frame,(Width//scale_ratio,Height//scale_ratio),interpolation = cv2.INTER_AREA)
            
            thresh_pipeline(frame)

            screen.fill([0,0,0])

            frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            frame = cv2.transpose(frame)
            frame = pygame.surfarray.make_surface(frame)
            screen.blit(frame, (0,0))
            
            pygame.display.update()
            
            num += 1
        for event in pygame.event.get():
            if event.type == QUIT:
                sys.exit()

这里使用 pygame 来显示图片,有关 pygame 使用方法还是比较简单,pygame.init()初始化 pygame 对象,通过调用 pygame 的 display 对象可以调用一些显示相关的方法。例如set_caption("OpenCV Video"),调用 display 提供的set_model方法来获取显示窗口 screen ,类似一个画布,然后可以在这个画布上绘制图片和文字。surfarraymake_surface的方法来将 frame 生成为 surface 后渲染到 screen 上。然后调用

thresh_pipeline(frame)

HLS(Hue, Saturation, Lightness) 色彩空间

  • 色相(Hue): 是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。
  • 饱和度(Saturation):是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
  • 亮度(Lightness):亮度(L),取0-100%。

这里我们为了检测车道线,我们需要将图片置于一个车道线容易识别的色彩空间内。这里使用 HLS 色彩空间来便于检测边缘线

用途

Hsl-hsv_models.png
    # 转换颜色
    hls = cv2.cvtColor(img,cv2.COLOR_RGB2HLS)
    # 获取图片的饱和度通道
    s_channel = hls[:,:,2]
    s_binary = np.zeros_like(s_channel)
    s_binary[s_channel >= s_thresh[0] & (s_channel <= s_thresh[1])] = 1


    hsv = cv2.cvtColor(img,cv2.COLOR_RGB2HSV)
    # 获取图片的饱和度通道
    v_channel = hsv[:,:,2]
    v_binary = np.zeros_like(v_channel)
    v_binary[v_channel >= v_thresh[0] & (v_channel <= v_thresh[1])] = 1

    c_binary = np.zeros_like(s_channel)
    c_binary[(s_binary == 1) & (v_binary==1)] = 1

    return c_binary

Sobel

Sobel operator (索贝尔算子)主要用作边缘检测,是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量。

sobal_filter_convolution.png sobel_x_thresh.jpg sobel_y_thresh.jpg
def abs_sobel_thresh(img,orient='x',sobel_kernel=3,thresh=(0,255)):
    # 将图像处理为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

    if orient == 'x':
        sobel = cv2.Sobel(gray,cv2.CV_64F,1,0,ksize=sobel_kernel)
    if orient == 'y':
        sobel = cv2.Sobel(gray,cv2.CV_64F,0,1,ksize=sobel_kernel)
    abs_sobel = np.absolute(sobel)
    scaled_sobel = np.uint8(255 * abs_sobel/np.max(abs_sobel))
    grad_binary = np.zeros_like(scaled_sobel)
    grad_binary[(scaled_sobel >= thresh[0]) & (scaled_sobel <= thresh[1])] = 1
    # print(abs_sobel)
    return grad_binary

相关文章

  • 2020 无人驾驶(5)之车道线检测

    这里使用 pygame 来显示图片,有关 pygame 使用方法还是比较简单,pygame.init()初始化 p...

  • 2020 无人驾驶(6)之车道线检测

    甜品 为什么喜欢无人驾驶任务,主要原因无人驾驶任务是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法...

  • 2020 无人驾驶(7)之车道线检测

    读取图像 使用 python-opencv 读取图像 使用 pygame 显示图像,这是一贯的套路 bird-ey...

  • 项目二:无人驾驶之车道线检测

    一、读取图像常用的三种方式 1.方式一:matplotlib.image 2.方式二:opencv读取图像 3.方...

  • 每天一个知识点(九)

    车道线的检测方法有很多,基于视觉的车道线检测有一下几种:基于霍夫之间检测、基于LSD直线检测、基于俯视图变换的车道...

  • 车道线检测

    今天完成了车道线的检测,检测的算法流程如图1所示,

  • 车道线检测-方法1

    在汽车自动驾驶过程中,你需要汽车能够对周围的世界进行很好的感知。我们人类通过使用眼睛来了解汽车跑的有多快,汽车的车...

  • 车道线检测技术分析

    姓名:刘一婷;学号:20021210599;学院:电子工程学院 转载于 :微信公众号“CV研习社”’ 原文链接:h...

  • 2020 简单车道线检测实现(上)

    分享一个简单车道识别示例,介绍如何使用 opencv 识别图像中车道线,有助于对车辆进行导航,虽然比较基础,主要目...

  • [图像算法]-无人驾驶-车辆+车道检测

    任务 1.车辆检测 2.车道检测 1.车辆检测 2.车道检测 一共要完成两项任务: 1. 在所提供的公路图片上检测...

网友评论

      本文标题:2020 无人驾驶(5)之车道线检测

      本文链接:https://www.haomeiwen.com/subject/pubpektx.html