所以我试图用Numpy和OpenCV的Python 3.4完成这个:
1) Grab pixel color in HSV format in desired area.
2) Use it with cv2.inRange
3) Track given object
以下是我的代码片段:
# Capture pixel color from HSV
ret, frame = cap.read()
frame = cv2.GaussianBlur(frame, (11, 11), 0)
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
height, width = frame.shape[:2]
color = hsv[int(width/2)][int(height/2)] # Grab pixel at center
我的问题是,当我想手动跟踪红色对象时,我需要按如下方式设置inRange:
lower_collor = np.array([0, 150, 150])
upper_collor = np.array([10, 255, 255])
mask = cv2.inRange(hsv, lower_color, upper_color)
它(几乎)完美地工作,但是当我尝试用像素上面的代码抓取红色物体的颜色时,得到这个值:18 84 183
。所以H和V值是+ - 好的,但是S值完全超出范围。
我想我只是遗漏了一些东西,但我无法弄清楚它是什么。