How to set HSV color range in OpenCV?

后端 未结 1 1412
暗喜
暗喜 2021-01-24 07:09

I have a phone and it\'s HSV histogram like blow,and I want to track this phone\'s movement.Based on it\'s histogram,I set image range like this:

greenLower = (3         


        
相关标签:
1条回答
  • 2021-01-24 07:48

    You have wrongly set the upper and lower bounds, they must be:

    greenLower = (50, 0, 50)         # Previously (300, 0, 50)
    greenUpper = (300, 128, 250)     # Previously (50, 128,250)
    

    Also make sure that hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) as OpenCV follows the BGR convention.

    EDIT:

    To segment colors in multiple ranges 0~50 and 300~359, you can perform cv2.inRange() twice for two ranges as:

    greenLower1 = (0, 0, 20)         
    greenUpper1 = (50, 128, 100)     
    
    greenLower2 = (300, 0, 20)         
    greenUpper2 = (359, 128, 100)     
    
    mask1 = cv2.inRange(img_hsv, greenLower1, greenUpper1)
    mask2 = cv2.inRange(img_hsv, greenLower2, greenUpper2)
    
    mask = cv2.max(mask1, mask2)
    
    0 讨论(0)
提交回复
热议问题