c++ OpenCV怎么使用InRange对HSV颜色进行分割

介绍

这篇文章主要讲解了“c++ OpenCV怎么使用InRange对HSV颜色进行分割”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c++ OpenCV怎么使用InRange对HSV颜色进行分割”吧!


<强> API函数

空白InRange (InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)
官方文档中的解释:检查数组元素是否在另外两个数组元素值之间。这里的数组通常也就是矩阵垫或向量。请注意:该函数输出的dst是一幅二值化之后的图像。

<强>使用示例1:针对单通道图像
dst (I)=lowerb (I) 0≤src (I) 0 & lt;upperb (I) 0
即,如果一幅灰度图像的某个像素的灰度值在指定的高、低阈值范围之内,则在dst图像中令该像素值为255,否则令其为0,这样就生成了一幅二值化的输出图像。

<强>使用示例2:针对三通道图像
dst (I)=lowerb (I) 0≤src (I) 0 & lt;upperb (I) 0∧lowerb (I) 1≤src (I) 1 & lt;upperb (I) 1∧lowerb (I) 2≤src (I) 2 & lt;upperb (I) 2
即,每个通道的像素值都必须在规定的阈值范围内!

<人力资源/>

<强>代码演示

我们再新建一个项目名为opencv video2,按照配置属性(VS2017配置opencv通用属性),然后在源文件写入# include和主方法

 C + + opencv怎么使用InRange对HSV颜色进行分割

 C + + opencv怎么使用InRange对HSV颜色进行分割”> <br/> </p> <p>我这里提前录了一个test6。mp4的视频,我们这里运行一下这个程序看看原始视频。</p> <p>从视频中我们看的到,里面我拿了一个蓝色的按摩器来镜头里来回晃动。</p> <p>下面我们就通过InRange的函数把蓝色提取出来进行分割。在《》一篇中的颜色HSV的表格中我们可以看到<强>蓝色的H范围在100 - 124年之间,年代的范围在43 - 255之间,V的范围在46 - 255之间</>强,如下图:</p> <p> <img src=

所以我们在代码中先把这两个范围值定义出来

 C + + OpenCV怎么使用InRange对HSV颜色进行分割

然后我们在视频播放的时候需要对原始图像转换变HSV图像,然后通过InRange把颜色分割后显示出来

 C + + OpenCV怎么使用InRange对HSV颜色进行分割

运行后的效果就是文章开始的视频、下面是视频中的屏幕截图

 C + + OpenCV怎么使用InRange对HSV颜色进行分割

<强>上面的视频中我们可以看出来,蓝色的都已经获取下来了,说一下重点:

<李>

<强>图像必须先通过cvtColor转换为HSV的图像

<李>

<强>定义的标量里的三个数值就是以H, S, V的参数设置的

感谢各位的阅读,以上就是“c++ OpenCV怎么使用InRange对HSV颜色进行分割”的内容了,经过本文的学习后,相信大家对c++ OpenCV怎么使用InRange对HSV颜色进行分割这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

c++ OpenCV怎么使用InRange对HSV颜色进行分割