HSV(hue saturation value)
色调(hue):对应于颜色成分(基础色素),因此,只需选择一个色调范围,就可以选择任何颜色。(0—360)
饱和度(saturation):颜色的数量(颜料的深度)(主导色调)(0—100%)
值(value):颜色的亮度。(0—100%)
即
H - 色调(主导波长)。
S - 饱和度(颜色的纯度/色调)。
V - 值(强度)。
对于HSV,Hue范围是[0,179],饱和范围是[0,255],值范围是[0,255]
1、学习目标
使用HSV色彩空间进行物体检测和物体跟踪
(1)使用色调饱和度值(HSV)颜色模型实现基于颜色和形状的对象检测和跟踪。
(2)使用cv :: inRange
(OpenCV)为色彩检测选择正确的上下HSV边界
(3)使用轨迹栏。
2、函数方法
cv2.cvtColor()
cv2.inRange()
3、程序
(1)探测物体
原图
处理结果
(2)使用轨道棒探测物体
原图
结果
(3)使用轨道棒探测视频
原视频
处理结果
函数讲解:
(1)将图像从一个颜色空间转换为另一个颜色空间。
cv2.cvtColor(src, code[, dst[, dstCn]]) → dst
参数
src - 输入图像:8位无符号,16位无符号(CV_16UC...)或单精度浮点。
dst - 输出与大小和深度相同的图像src。
code - 颜色空间转换代码(参见下面的描述)。
dstCn- 目标图像中的通道数; 如果参数为0,则自动从src 和code导出通道数
程序中的例子
cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
在转换为RGB颜色空间的情况下,应明确指定通道的顺序(RGB或BGR)
(2)创建一个数组
numpy.array(object,dtype = None,copy = True,order ='K',subok = False,ndmin = 0 )
参数:
object : array_like
数组,公开数组接口的任何对象,__array__方法返回数组的对象,或任何(嵌套)序列。
dtype : 数据类型,可选
数组所需的数据类型。如果没有给出,那么类型将被确定为保持序列中的对象所需的最小类型。此参数只能用于“upcast”数组。对于向下转换,请使用.astype(t)方法。
copy : bool,可选
如果为true(默认值),则复制对象。否则,只有当__array__返回副本,obj是嵌套序列,或者需要副本来满足任何其他要求(dtype,顺序等)时,才会进行复制。
order:{'K','A','C','F'},可选
指定阵列的内存布局。如果object不是数组,则新创建的数组将按C顺序排列(行主要),除非指定了'F',在这种情况下,它将采用Fortran顺序(专业列)。如果object是一个数组,则以下成立。
order no copy copy=True
‘K’ unchanged F & C order preserved, otherwise most similar order
‘A’ unchanged F order if input is F and not C, otherwise C order
‘C’ C order C order
‘F’ F order F order
subok : bool,可选
如果为True,则子类将被传递,否则返回的数组将被强制为基类数组(默认)。
ndmin : int,可选
指定结果数组应具有的最小维数。为满足此要求,将根据需要预先设置形状。
returns:out :ndarray
满足指定要求的数组对象。
(3)
inRange(src,lowerb, upperb[, dst]) -> dst
参数:
src:原数组,可以为单通道,多通道
lowerb: 下界
upperb: 上界
(a)单通道,
假设lower=[0],upper=[128]
对每个数在0-128之间为255,否则为0;
(b)多通道,
假设lower=[0,0,0],upper=[128,128,128,128]
对每一行,对任意一个数,如果在范围内,则255,否则0,最后的几个数相与,因此如果都是255,为255,否则为0