当前位置:   article > 正文

OpenCV笔记11:利用HSV颜色空间进行目标检测和目标跟踪_颜色分割hsv确定目标跟踪

颜色分割hsv确定目标跟踪

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导出通道数 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

程序中的例子

cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
  • 1

在转换为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
满足指定要求的数组对象。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

(3)

inRange(src,lowerb, upperb[, dst]) -> dst
参数:
src:原数组,可以为单通道,多通道
lowerb: 下界
upperb: 上界
  • 1
  • 2
  • 3
  • 4
  • 5

(a)单通道,
假设lower=[0],upper=[128]
对每个数在0-128之间为255,否则为0;

(b)多通道,
假设lower=[0,0,0],upper=[128,128,128,128]
对每一行,对任意一个数,如果在范围内,则255,否则0,最后的几个数相与,因此如果都是255,为255,否则为0

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/763714
推荐阅读
相关标签
  

闽ICP备14008679号