文章目录

  • HSV颜色模型
  • opencv 的 HSV颜色分量范围
  • 改变颜色空间 cvtColor()
  • 对象追踪 inRange()
  • DEMO

HSV颜色模型

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。、这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。

色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度S:取值范围为0.0~1.0;

亮度V:取值范围为0.0(黑色)~1.0(白色)。


如图所示: 这个锥体的高表示亮度,越往上越亮,取值范围【0,1】;
中心到边缘的距离表示饱和度,越靠边饱和度越大,取值范围【0,1】;
旋转角度表示的是色调,范围【0,360】;

opencv 的 HSV颜色分量范围

opencv 在上面的范围基础上进行了转化。

H: 0— 180 (即H = H / 2)
S: 0— 255 (即S = S * 255)
V: 0— 255 (即V = V * 255)

改变颜色空间 cvtColor()

OpenCV中有超过150种颜色空间转换方法。最广泛使用的,BGR↔灰色和BGR↔HSV。

对于颜色转换,我们使用cv函数。cvtColor()

CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
@param src         //输入图像:8位无符号,16位无符号(CV_16UC ...)或单精度浮点数。
@param dst         //输出图像的大小和深度与src相同。
@param code    //颜色空间转换代码(请参见#ColorConversionCodes)。
@param dstCn   //目标图像中的通道数;如果参数为0,则通道是自动从src和代码派生的。

对于BGR→灰度转换,我们使用标志cv::COLOR_BGR2GRAY。
对于BGR→HSV,我们使用标志cv::COLOR_BGR2HSV。

如果将#cvtColor用于8bit图像,转换会损失一些信息。建议先转化为CV_32F

@codeimg *= 1./255;cvtColor(img, img, COLOR_BGR2Luv);
@endcode

对象追踪 inRange()

现在我们知道了如何将BGR图像转换成HSV,我们可以使用它来提取一个有颜色的对象。在HSV中比在BGR颜色空间中更容易表示颜色。下面我们将尝试提取图片中红色部分。
方法如下:

  • 转换从BGR到HSV颜色空间 -
  • 我们对HSV图像设置红色范围的阈值 -
CV_EXPORTS_W void inRange(InputArray src, InputArray lowerb,InputArray upperb, OutputArray dst);
@param src         //输入数组。
@param lowerb  //包括下边界数组或标量。
@param upperb  //包含上边界数组或标量。
@param dst     //输出数组,其大小与src相同,类型为CV_8U,单通道。

DEMO

int main() {cv::namedWindow("src",0);cv::namedWindow("dst", 0);cv::Mat src = cv::imread("./img/test1.jpg", 1);cv::Mat dst,dst1,hsv;cv::cvtColor(src, hsv, cv::COLOR_BGR2HSV);cv::inRange(hsv, cv::Scalar(0, 43, 46), cv::Scalar(10, 255, 255),dst);cv::inRange(hsv, cv::Scalar(156, 43, 46), cv::Scalar(180, 255, 255), dst1);dst = dst + dst1;cv::imshow("src", src);cv::imshow("dst", dst);cv::waitKey(0);
}

opencv HSV色彩空间 追踪特定颜色相关推荐

  1. 通过HSV色彩空间对图像进行特定部分提取的简单实例的matlab实现

    最近在自学Matlab图像处理, 这里就将自己对通过HSV色彩空间提出颜色的一点理解写出来. HSV色彩空间对于光照强度的敏感性很小, 因此, 我们往往会将RGB色彩空间转换成HSV色彩空间, 然后根 ...

  2. 树莓派视觉小车 -- 小球追踪(颜色追踪)(OpenCV色彩空间HSV)

    目录 效果展示 基础理论(HSV) 为什么用HSV空间而不是RGB空间? HSV 1.Hue(色相) 2.Value(明度) 3.Saturation(饱和度) 一.初始化 滑动条初始化 1.创建回调 ...

  3. opencv 图像颜色空间转换和特定颜色物体追踪

    颜色空间转换 HSV简介 HSV是一个常用于颜色识别的模型,相比BGR更易区分颜色.H表示色调(Hue),S表示饱和度(Saturation),V表示明度(Value). OpenCV中色调H范围为[ ...

  4. Opencv色彩空间(GRAY、XYZ、HSV、YCrCb、HLS)展示,以及利用HSV标记指定的颜色

    本文简单介绍了几个常见的色彩空间转换: 因为HSV应用非常广泛,所以单独介绍其强大的功能: 本文用到的两个原始图像,如下图所示: 目录 一.Opencv色彩空间(GRAY.XYZ.HSV.YCrCb. ...

  5. Python+OpenCV教程5:颜色空间转换 追踪视频中特定颜色的物体 消除票据中的红色印章

    目标 颜色空间转换,如BGR↔Gray,BGR↔HSV等 追踪视频中特定颜色的物体 OpenCV函数:cv2.cvtColor(),cv2.inRange() 消除票据中的红色印章 教程 颜色空间转换 ...

  6. 如何在OpenCV中为InRange阈值选择颜色的最佳HSV值

    如何在OpenCV中为InRange阈值选择颜色的最佳HSV值 1. 效果图 2. 源码 参考 之前的博客介绍了如何使用Python,OpenCV通过HSV颜色空间转换检测对象,并进行轨迹追踪.怎么选 ...

  7. python opencv 检测特定颜色

    python opencv 检测特定颜色 import cv2 import numpy as npcap = cv2.VideoCapture(0)# set blue thresh 设置HSV中蓝 ...

  8. Opencv inRang() 和HSV色彩空间表

    文章目录 1. 常规使用 2. HSV颜色解释和求值 3. 将某一个RGB颜色转为对应的HSV表示 参考Opencv文档,点击 这里 1. 常规使用 想通过cv2.inRange()筛选颜色区域,一般 ...

  9. python opencv选取特定颜色区域

    import cv2 import numpy as np # 回调函数,x表示滑块的位置,本例暂不使用 def nothing(x):pass def ColorDetector(img, lowe ...

最新文章

  1. linux删除指定创建时间文件(文件夹)脚本
  2. HTTPS 接入优化建议
  3. 赛马问题,毒药问题,倒水问题等智力题
  4. PHP在Windows环境下获取GMT时间
  5. Leet Code OJ 26. Remove Duplicates from Sorted Array [Difficulty: Easy]
  6. 在ubuntu 16.04里使用python—scrapy将爬取到的数据存到mysql数据库中的一些随笔
  7. 威海二职工业机器人专业_现在各大专开设的工业机器人专业前景如何?
  8. grootjs 简明教程
  9. python 多核并行计算_嫌Python太慢?并行运算Process Pools三行代码给你4倍提速!
  10. Java 初始化块
  11. Windows 7密码重设盘的内部原理浅析
  12. C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码
  13. 在mysql中怎么存储表情符号,如何在MySQL数据库中存储表情符号字符
  14. 教你如何用java开发Alexa语音设备。全程详细介绍。
  15. android手机进入动画,安卓用户必读,如何进入手机开发者模式,以及你必用的功能!...
  16. [NOIP 2009] 细胞分裂
  17. 线程、进程和协成对比
  18. 打开窗,让阳光洒进来
  19. 接口测试[PostMan]
  20. 2021高考辽宁英语成绩查询,2021年辽宁高考英语满分多少分?

热门文章

  1. 我们应该为了爱,还是为了钱而找工作?
  2. 【vim】vim行首加入某字符
  3. [Jo厨]Jupyter Notebook+VsCode+豆沙绿主题
  4. python 打印数组第一行_打印数组中的第一个值而不是只打印第一个字母?(Python)...
  5. 转码机器人(微信转码,小程序转码)
  6. 搜狗输入法vscode 自动繁体_如何解决VSCode Vim中文输入法切换问题?
  7. 无线链接IC-市场现状及未来发展趋势
  8. 计算机开机控制信号,笔记本电脑开机及信号电路故障维修
  9. 一个简单的三极管音频放大电路
  10. 第一代至第五代计算机分别是,计算机应用基础教案—计算机的分类与发展(中职教育)...