1.转换颜色空间
在OpenCV中有超过150 种进行颜色空间转换的方法。经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。我们用到的函数是cv2.cvtColor(input_image flag),其中flag就是转换类型。
对于BGR↔Gray的转换,我们使用的flag就是cv2.COLOR_BGR2GRAY。
对于BGR↔HSV的转换我们用的flag就是cv2.COLOR_BGR2HSV。
在 OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0,179], S(饱和度)的取值范围 [0,255],V(亮度)的取值范围 [0,255]。但是不同的软件使用的值可能不同。
2.物体跟踪
现在我们知怎样将一幅图像从 BGR 换到 HSV 了,我们可以利用 一点来提取带有某个特定色的物体。在 HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。
在我们的程序中,我们提取的是一个蓝色的物体。下就是就是我们做的几步:
• 从视频中获取每一帧图像
• 将图像换到 HSV 空间
• 设置 HSV 阀值到蓝色范围。
• 获取蓝色物体,当然我们可以做其他任何我们想做的事,比如:在蓝色物体周围画一个圈。
我运行了这个,噪点非常的多,没出来效果,这是网上的图,可能还需要再修正这个值,需要消减噪音。
3.怎样找到要跟踪对象的HSV值
函数cv2.cvtColor()可以用到这里,现在需要传入的参数是RGB的值而不是一幅图。例如要找到绿色的HSV值,只需在终端输入以下命令或运行该指令脚本。
你可以分别用 [H-100,100,100] 和 [H+100,255,255] 做上下阀值。
閱讀更多 小5嵌入式 的文章