欢迎光临散文网 会员登陆 & 注册

【第九节】OpenCV颜色空间转换

2022-11-16 18:33 作者:海鸥之道  | 我要投稿

目标

  • 你将学习如何对图像进行颜色空间转换,比如充BGR到灰度图,或者从BGR到HSV等。

  • 我们还要创建一个程序用来从一幅图像中获取某个特定颜色的物体。

  • 我们还要学习的函数有:CV2.cvtColor(),CV2.inRange()等

1、转换颜色空间

        在OpenCV中有超过150中进行颜色空间转换的方法。但是你以后就会

发现我们经常用到的也就两种: BGR↔Gray和BGR↔HSV。我们要用到的函数是: CV2.cvtColor(input_ image, flag),其中flag就是转换类型。

    对于BGR↔Gray的转换,我们要使用的flag就是CV2.COLOR_ BGR2CRAY。同样对于BGR↔HSV的转换,我们用的flag就是CV2.COLOR_ BCR2HSV。你还可以通过下面的命令得到所有可用的flag。

输出:

注意:在OpenCV的HSV格式中,H(色彩/色度)的取值范围是[0,179],S(饱和度)的取值范围[0,255],V(亮度)的取值范围[0,255]。但是不同的软件使用的值可能不同。所以当你需要拿OpenCV的HSV值与其他软件的HSV值进行对比时,一定要记得归一化。

2、物体跟踪

        现在我们知道怎样将一幅图像从BGR转换到HSV了,我们可以利用这-点来提取带有某个特定颜色的物体。在HSV颜色空间中要比在BGR空间中更容易表示-个特定颜色。在我们的程序中,我们要提取的是一个红色的物体。下 面就是就是我们要做的几步: .

  • 从视频中获取每一帧图像

  • 将图像转换到HSV空间

  • 设置HSV阈值到红色范围。

  • 获取红色物体,当然我们还可以做其他任何我们想做的事,比如:在红色物体周围画-个圈。

下面就是我们的代码:

追踪红色物体的显示结果如下:

注意:图像中有一些噪音,我们会在后面的章节中介绍如何消减噪音。

注意:这是物体跟踪中最简单的方法。当你学习了轮廓之后,你就会学到更多相关知识,那是你就可以找到物体的重心,并根据重心来跟踪物体,仅仅在摄像头前挥挥手就可以画出同的图形,或者其他更有趣的事。

3、怎样找到要跟踪对象的HSV值?

函数CV2.cvtColor()可以实现这个功能。但是现在你要传入的阐述是BGR值,而不是一幅图。例如,我们要找到绿色的HSV值,我们只需要在终端输入一下指令:

        现在你可以分别用[H-100,100,100] 和[H+100,255,255]做上下阈值。除了这个方法之外,你可以使用任何其他图像编辑软件(例如GIMP )或者在线转换软件找到相应的HSV值,但是最后别忘了调节HSV的范围。



【第九节】OpenCV颜色空间转换的评论 (共 条)

分享到微博请遵守国家法律