如何定义阈值以仅检测图像中的绿色对象:Opencv

时间:2017-11-25 08:20:07

标签: python opencv image-processing threshold

我只想检测自然环境中捕获的图像中的绿色物体。如何定义它?因为在这里我想要通过阈值让我们说'x',通过使用这个x我想只获得一种颜色的绿色对象(白色)其他必须出现在另一种颜色中颜色(黑色) 请指导我这样做。提前谢谢。

1 个答案:

答案 0 :(得分:21)

更新

我制作了HSV色彩图。它more easy and accurate使用此地图查找颜色范围。

也许我应该更改使用(40, 40,40) ~ (70, 255,255) in hsv来查找green

enter image description here

原始回答

  1. 转换为HSV色彩空间
  2. 使用cv2.inRange(hsv, hsv_lower, hsv_higher)获取绿色遮罩。
  3. 我们对此the range (in hsv)使用(36,0,0) ~ (86,255,255)sunflower

    源图片:

    enter image description here

    蒙面绿色区域:

    enter image description here

    更多步骤:

    enter image description here

    核心源代码:

    import cv2
    import numpy as np
    
    ## Read
    img = cv2.imread("sunflower.jpg")
    
    ## convert to hsv
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    ## mask of green (36,25,25) ~ (86, 255,255)
    # mask = cv2.inRange(hsv, (36, 25, 25), (86, 255,255))
    mask = cv2.inRange(hsv, (36, 25, 25), (70, 255,255))
    
    ## slice the green
    imask = mask>0
    green = np.zeros_like(img, np.uint8)
    green[imask] = img[imask]
    
    ## save 
    cv2.imwrite("green.png", green)
    

    类似:

    1. Choosing the correct upper and lower HSV boundaries for color detection with`cv::inRange` (OpenCV)