opencv入门系列教学(七)改变颜色空间、提取彩色对象
0.序言
之前的博客里我们介绍了opencv在图像上的基本操作,下面我们来进行稍微深入一点的介绍,从这里开始我们可以发现opencv库能给我们带来的更多更有趣的功能。从现在开始,我们将逐步深入了解opencv库中对图像处理的一些高级方式。
- 在这篇博客中,我们将学习如何将图像在色彩空间之间的转换,例如BGR转换成灰色,BGR转换成HSV等
- 此外,我们还将创建一个应用程序,以提取视频中的彩色对象
- 我们还将学习以下功能:cv.cvtColor,**cv.inRange**等
1.改变颜色空间
OpenCV中有超过150种颜色空间转换的方法。但是我们只有两个最广泛使用的,BGR↔灰色和BGR↔HSV。
对于颜色转换,我们使用cv函数。
其中flag决定转换的类型。
例如对于BGR→灰度转换,我们让flag标记为cv.COLOR_BGR2GRAY。类似地,对于BGR→HSV,我们让flag标记为cv.COLOR_BGR2HSV。要获取其他标记,只需在Python终端中运行以下命令:
需要注意的一点,HSV的色相范围为[0,179],饱和度范围为[0,255],值范围为[0,255]。且不同的软件里使用不同的规模,这点细节需要注意。
2.对象追踪
因为在HSV空间中比在BGR颜色空间中更容易表示颜色。现在我们知道了如何将BGR图像转换成HSV,通过这种方式,我们可以就可以提取视频或图片中一个某个有颜色的对象。
例如下面的应用程序所示,我们将尝试提取一个蓝色的对象。方法如下:
- 取视频的每一帧 。
- 转换从BGR到HSV颜色空间 。
- 对HSV图像设置蓝色范围的阈值。
- 单独提取蓝色对象。
代码如下所示import cv2 as cv
注意:图像中有一些噪点。我们将在后面的章节中看到如何删除它们。 这是对象跟踪中最简单的方法。一旦学习了轮廓的功能,我们就可以做很多事情,例如找到该对象的质心并使用它来跟踪对象等,这也是opencv库的强大之处。