zoukankan      html  css  js  c++  java
  • 检测车道线——3.提取感兴趣区域内的颜色识别

     
     1  import matplotlib.pyplot as plt
     2  import matplotlib.image as mpimg
     3  import numpy as np
     4  
     5  # Read in the image
     6  image = mpimg.imread('E:/spyder/a/a/test.jpg')
     7  
     8  # Grab the x and y sizes and make two copies of the image
     9  # With one copy we'll extract only the pixels that meet our selection,
    10  # then we'll paint those pixels red in the original image to see our selection 
    11  # overlaid on the original.
    12  ysize = image.shape[0]
    13  xsize = image.shape[1]
    14  color_select= np.copy(image)
    15  line_image = np.copy(image)
    16  
    17  # Define our color criteria
    18  red_threshold = 200
    19  green_threshold = 200
    20  blue_threshold = 200
    21  rgb_threshold = [red_threshold, green_threshold, blue_threshold]
    22  
    23  # Define a triangle region of interest (Note: if you run this code, 
    24  # Keep in mind the origin (x=0, y=0) is in the upper left in image processing
    25  # you'll find these are not sensible values!!
    26  # But you'll get a chance to play with them soon in a quiz ;)
    27  left_bottom = [0, 539]
    28  right_bottom = [900, 500]
    29  apex = [400, 300]
    30  
    31  fit_left = np.polyfit((left_bottom[0], apex[0]), (left_bottom[1], apex[1]), 1)
    32  fit_right = np.polyfit((right_bottom[0], apex[0]), (right_bottom[1], apex[1]), 1)
    33  fit_bottom = np.polyfit((left_bottom[0], right_bottom[0]), (left_bottom[1], right_bottom[1]), 1)
    34  
    35  # Mask pixels below the threshold
    36  color_thresholds = (image[:,:,0] < rgb_threshold[0]) | 
    37                      (image[:,:,1] < rgb_threshold[1]) | 
    38                      (image[:,:,2] < rgb_threshold[2])
    39  
    40  # Find the region inside the lines
    41  XX, YY = np.meshgrid(np.arange(0, xsize), np.arange(0, ysize))
    42  region_thresholds = (YY > (XX*fit_left[0] + fit_left[1])) & 
    43                      (YY > (XX*fit_right[0] + fit_right[1])) & 
    44                      (YY < (XX*fit_bottom[0] + fit_bottom[1]))
    45  # Mask color selection
    46  color_select[color_thresholds] = [0,0,0]
    47  # Find where image is both colored right and in the region
    48  line_image[~color_thresholds & region_thresholds] = [255,0,0]
    49  
    50  # Display our two output images
    51  plt.imshow(line_image)

    结果如下图所示

     代码27~29改动为

    27 left_bottom = [0, 539]
    28 right_bottom = [900, 539]
    29 apex = [475, 320]

    结果如下图

    代码51改动为

    51 x=[left_bottom[0],right_bottom[0],apex[0],left_bottom[0]]
    52 y=[left_bottom[1],right_bottom[1],apex[1],left_bottom[1]]
    53 plt.plot(x,y,'b--',lw=4)
    54 plt.imshow(line_image)

    结果如下图

     

  • 相关阅读:
    并发之线程封闭与ThreadLocal解析
    并发之不可变对象
    开发者
    并发之atomicInteger与CAS机制
    并发之synchronized关键字的应用
    并发之volatile关键字
    并发研究之可见性、有序性、原子性
    并发研究之Java内存模型(Java Memory Model)
    并发研究之CPU缓存一致性协议(MESI)
    线程安全的日期处理
  • 原文地址:https://www.cnblogs.com/minyshi/p/8573658.html
Copyright © 2011-2022 走看看