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
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)