计算机视觉 OpenCV【六:应用之颜色检测】 |
您所在的位置:网站首页 › 测颜色识别图片大全高清图 › 计算机视觉 OpenCV【六:应用之颜色检测】 |
目录
一、什么是颜色检测 颜色检测步骤 二、HSV图像类型介绍 选择HSV进行颜色检测的原因 三、实例 1.RGB转HSV 2. 定义蒙版 3. 定义上下限 4.颜色检测,得到二值图像,并输出至蒙版 5.番外:转换为实时跟踪检测,可调模式 5.1 创建跟踪栏窗口 5.2 创建跟踪栏 5.3 写while循环 效果 一、什么是颜色检测颜色检测就是对目标图像的所有像素点进行筛选,将符合指标的像素设置为白色,不符合指标的像素设置为黑色。 指标由上界和下界组成。 比如,我们要检测下面这一张图片: 我们准备检测黑色,也就是图中的杯子,以及猫的耳朵内部也有一点黑色部分,当然还有右边的墙角。 那么经过颜色检测后,我们能得到这样一张图: 这就是颜色检测的作用。 颜色检测步骤1.将需要检测的RGB图像转换成HSV图像 2.定义Mat类型的一个对象:蒙版mask 3.定义颜色上下限 其中上限是一个Scalar对象,包含三个值:hmin,smin,vmin,表示hsv三个要素的最小值; 而下限也是一个Scalar对象,包含三个值:hmax,smax,vmax,表示hsv三个要素的最大值。 4.使用inRange函数,检测src图像的每一个像素是不是在lowerb和upperb之间 如果是,这个像素就设置为255,并保存在mask图像中,否则为0。 二、HSV图像类型介绍 HSV是相对RGB的另一种颜色表示方式,它相对RGB而言,是一种比较直观的颜色模型。其中颜色的参数分别是:色调(H),饱和度(S),明度(V)。 色调H: 用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°; 饱和度S: 饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。 明度V: 明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关,光照对此值影响最大。通常取值范围为0%(黑)到100%(白)。 一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。 H: 0— 180 S: 0— 255 V: 0— 255 此处把部分红色归为紫色范围: 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。 相对于RGB空间,HSV空间能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间的对比。 所以我们在颜色检测时,选用HSV图像。 下图为RGB VS HSV 要检测的原图: 这里我们检测的是橙色,上述hsv的上下限就是橙色的对应上下限。 效果如下: 这里要注意,和网络摄像头一样,我们需要设置waitKey为1毫秒。 效果 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |