Finding red color in image using Python & OpenCV

前端 未结 3 1376
有刺的猬
有刺的猬 2020-12-02 14:26

I am trying to extract red color from an image. I have code that applies threshold to leave only values from specified range:

img=cv2.imread(\'img.bmp\')
img         


        
3条回答
  •  甜味超标
    2020-12-02 15:15

    I would just add the masks together, and use np.where to mask the original image.

    img=cv2.imread("img.bmp")
    img_hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # lower mask (0-10)
    lower_red = np.array([0,50,50])
    upper_red = np.array([10,255,255])
    mask0 = cv2.inRange(img_hsv, lower_red, upper_red)
    
    # upper mask (170-180)
    lower_red = np.array([170,50,50])
    upper_red = np.array([180,255,255])
    mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
    
    # join my masks
    mask = mask0+mask1
    
    # set my output img to zero everywhere except my mask
    output_img = img.copy()
    output_img[np.where(mask==0)] = 0
    
    # or your HSV image, which I *believe* is what you want
    output_hsv = img_hsv.copy()
    output_hsv[np.where(mask==0)] = 0
    

    This should be much faster and much more readable than looping through each pixel of your image.

提交回复
热议问题