如何在 OpenCV 中设置 HSV 颜色范围?
How to set HSV color range in OpenCV?
我有一个 phone,它是像 blow 一样的 HSV 直方图,我想在它的直方图上跟踪这个 phone 的 movement.Based,我这样设置图像范围:
greenLower = (300, 0, 50)
greenUpper = (50, 128,250 )
cv2.inRange(hsv, greenLower, greenUpper)
但是挥动 phone 时没有检测到任何东西,我很确定这是因为颜色范围错误,你能告诉我如何正确设置颜色范围吗?特别是当 HUE 值是在[300~50]之间,我应该把它设置为(50~300)还是(300~50)因为HUE是一个圆
Phone
HSV histogram:
你设置的上限和下限有误,应该是:
greenLower = (50, 0, 50) # Previously (300, 0, 50)
greenUpper = (300, 128, 250) # Previously (50, 128,250)
还要确保 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
作为 OpenCV 遵循 BGR
约定。
编辑:
要在多个范围 0~50
和 300~359
中分割颜色,您可以对两个范围执行两次 cv2.inRange()
,如:
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)
我有一个 phone,它是像 blow 一样的 HSV 直方图,我想在它的直方图上跟踪这个 phone 的 movement.Based,我这样设置图像范围:
greenLower = (300, 0, 50)
greenUpper = (50, 128,250 )
cv2.inRange(hsv, greenLower, greenUpper)
但是挥动 phone 时没有检测到任何东西,我很确定这是因为颜色范围错误,你能告诉我如何正确设置颜色范围吗?特别是当 HUE 值是在[300~50]之间,我应该把它设置为(50~300)还是(300~50)因为HUE是一个圆
Phone
HSV histogram:
你设置的上限和下限有误,应该是:
greenLower = (50, 0, 50) # Previously (300, 0, 50)
greenUpper = (300, 128, 250) # Previously (50, 128,250)
还要确保 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
作为 OpenCV 遵循 BGR
约定。
编辑:
要在多个范围 0~50
和 300~359
中分割颜色,您可以对两个范围执行两次 cv2.inRange()
,如:
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)