美文网首页
颜色转换,利用HSV颜色空间检测

颜色转换,利用HSV颜色空间检测

作者: 徐凯_xp | 来源:发表于2018-08-05 09:01 被阅读0次
    import numpy as np
    import matplotlib.pyplot as plt
    import cv2
    %matplotlib inline
    # Read in the image
    image = cv2.imread('images/water_balloons.jpg')
    # Change color to RGB (from BGR)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    plt.imshow(image)
    
    
    绘制颜色通道
    #RGB channels
    R = image[:, :, 0]
    G = image[:, ;, 1]
    B = image[:, :, 2]
    
    f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20,10)) #生成一个一行三列的f图像.
    
    ax1.set_title('Red')
    ax1.imshow(r, cmap='gray')
    
    ax2.set_title('Green')
    ax2.imshow(g, cmap='gray')
    
    ax3.set_title('Blue')
    ax3.imshow(b, cmap='gray')
    

    绘制出这些通道的灰度版本 以便观察各通道的强度,像素越亮 代表的红色、绿色或蓝色值就越高。我们可以看到 粉色气球的红色值很高 蓝色值也相对比较高,但值大小不一 特别是当气球位于阴影下的时候。

    # Convert from RGB to HSV
    hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
    
    # HSV channels
    h = hsv[:,:,0]
    s = hsv[:,:,1]
    v = hsv[:,:,2]
    
    f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20,10))
    
    ax1.set_title('Hue')
    ax1.imshow(h, cmap='gray')
    
    ax2.set_title('Saturation')
    ax2.imshow(s, cmap='gray')
    
    ax3.set_title('Value')
    ax3.imshow(v, cmap='gray')
    
    设置色彩空间选择阈值
    # Define our color selection criteria in HSV values
    lower_hue = np.array([160,0,0]) 
    upper_hue = np.array([180,255,255])
    
    # Define our color selection criteria in RGB values
    lower_pink = np.array([180,0,100]) 
    upper_pink = np.array([255,255,230])
    
    创建掩模图像
    # Define the masked area in RGB space
    mask_rgb = cv2.inRange(image, lower_pink, upper_pink)
    
    # mask the image
    masked_image = np.copy(image)
    masked_image[mask_rgb==0] = [0,0,0]
    
    # Vizualize the mask
    plt.imshow(masked_image)
    
    Now try HSV!
    # Define the masked area in HSV space
    mask_hsv = cv2.inRange(hsv, lower_hue, upper_hue)
    
    # mask the image
    masked_image = np.copy(image)
    masked_image[mask_hsv==0] = [0,0,0]
    
    # Vizualize the mask
    plt.imshow(masked_image)
    

    看看这个选择结果 我们会发现几乎所有粉色气球都被选中了,由此可见 HSV 空间更擅长选泽处于不同光线下的区域

    相关文章

      网友评论

          本文标题:颜色转换,利用HSV颜色空间检测

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