当前位置:   article > 正文

opencv颜色识别思路_opencv颜色识别原理

opencv颜色识别原理

一、Opencv颜色识别步骤:

调用手机摄像头

Opencv颜色处理

存储色块图像和位置信息

接下来主要介绍opencv颜色处理过程

二、
Opencv图像处理思路

  1. 创建滑动条:用来调节阈值,识别出不同颜色。

  2. 颜色空间转换:将RGB转换为HSV模型,于是可以通过不同颜色的HSV的阈值不同来识别出该种颜色。Opencv中使用cvtcolor()可实现。

一般彩色图像都是RGB颜色空间,而HSV色彩空间模型是一种在人们生活中甚至更常用的颜色系统,在电视遥控器上、在画画的调色板中、在看电视时调整亮度时都很常见,因为它更符合人们描述颜色的方式——是什么颜色、颜色有多深、颜色有多亮。

需要注意的是,在opencv中,H、S、V值范围分别是[0,180),[0,255),[0,255),而非实际模型[0,360],[0,1],[0,1];下表为OpenCV中的HSV颜色体系大致区间范围:

  1. 直方图均衡化:由于光线的影响,手机读取的每一帧图片可能存在太亮或者太暗的问题,直方图均衡化可以将每个区间的像素点分布更均衡,使图像的层次感更强。Opencv中可以用equalizeHist()函数实现。

直方图均衡化就是将原始的直方图拉伸,使之均匀分布在全部灰度范围内,从而增强图像的对比度。直方图均衡化的中心思想是把原始图像的的灰度直方图从比较集中的某个区域变成在全部灰度范围内的均匀分布

  1. 二值化:将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。

对灰度图像进行二值化处理,可以突出一定范围的信息。它是将像素点颜色值在所设定区间内(如a-b)的设定为255,在范围外的设为0.但是对于ab和的不同取值,二值化的效果会有很大的不同。

  1. 开操作:用来去除图像中的噪点,即干扰信息。Opencv中可以使用getStructuringElement()函数来进行相应设置。

开操作是基于图像的膨胀和腐蚀而言的,膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。而开操作是对图像先腐蚀再膨胀,用来消除小物体。其数学原理是定义一个卷积核B,将其与目标图像进行卷积,就可以达到相应效果。不同形状和大小的核会出现不同的效果。

本项目是使用3*3内核去除噪声。

  1. 闭操作 :进行开操作之后可能会有一些断开的区域,闭操作可以将这些未联通的区域进行封闭,使图像更完整。

闭操作是开操作的相反,先膨胀再腐蚀,用于排除小型黑洞,其原理与开操作相同,在此不再赘述。

三、opencv识别效果图

如下图:中间窗口为原图,左边窗口为输出图像。通过调节右边control窗口的滑动条,即调节HSV的阈值,可以在左边窗口中得出所对应的颜色。

黄色效果图:

蓝色:

然后将这些色块的颜色和位置信息保存起来即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/369966
推荐阅读
相关标签
  

闽ICP备14008679号