可参考本栏 如何用OpenCV -python3实现视频物体追踪。
我们首先得明白在OpenCV的HSV格式中、H(色彩/色度)的取值范围是[0,179],S(饱和度)的取值范围[0,255],V(高度)的取值范围[0,255]。因此H的最大值不得超过180。其中S,V只是次要的。H才是决定颜色的主要因素。
在OpenCV里是BGR的顺序,转成RGB后,颜色的顺序发生了变化。因此阈值的范围也要发生改变。对于阈值的取值范围,可以参考阈值取值表。
import cv2
import numpy as np
#首先打印出红、绿、蓝三色的HSV值,来确定三色的阈值。
red = np.uint8([[[255, 0, 0]]])
hsv_red = cv2.cvtColor(red, cv2.COLOR_BGR2HSV)
print (hsv_red)
#[[[120 255 255]]]
green = np.uint8([[[0, 255, 0]]])
hsv_green = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
print (hsv_green)
#[[[ 60 255 255]]]
blue = np.uint8([[[0, 0, 255]]])
hsv_blue = cv2.cvtColor(blue, cv2.COLOR_BGR2HSV)
print (hsv_blue)
# [[[ 0 255 255]]]
#创建视频对象,0为内置摄像头
cap = cv2.VideoCapture(0)
while (1):
# 获取每一帧
ret, frame = cap.read()
# BGR 转换到 HSV,本