opencv HSV色彩空间 追踪特定颜色
文章目录
- 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色彩空间 追踪特定颜色相关推荐
- 通过HSV色彩空间对图像进行特定部分提取的简单实例的matlab实现
最近在自学Matlab图像处理, 这里就将自己对通过HSV色彩空间提出颜色的一点理解写出来. HSV色彩空间对于光照强度的敏感性很小, 因此, 我们往往会将RGB色彩空间转换成HSV色彩空间, 然后根 ...
- 树莓派视觉小车 -- 小球追踪(颜色追踪)(OpenCV色彩空间HSV)
目录 效果展示 基础理论(HSV) 为什么用HSV空间而不是RGB空间? HSV 1.Hue(色相) 2.Value(明度) 3.Saturation(饱和度) 一.初始化 滑动条初始化 1.创建回调 ...
- opencv 图像颜色空间转换和特定颜色物体追踪
颜色空间转换 HSV简介 HSV是一个常用于颜色识别的模型,相比BGR更易区分颜色.H表示色调(Hue),S表示饱和度(Saturation),V表示明度(Value). OpenCV中色调H范围为[ ...
- Opencv色彩空间(GRAY、XYZ、HSV、YCrCb、HLS)展示,以及利用HSV标记指定的颜色
本文简单介绍了几个常见的色彩空间转换: 因为HSV应用非常广泛,所以单独介绍其强大的功能: 本文用到的两个原始图像,如下图所示: 目录 一.Opencv色彩空间(GRAY.XYZ.HSV.YCrCb. ...
- Python+OpenCV教程5:颜色空间转换 追踪视频中特定颜色的物体 消除票据中的红色印章
目标 颜色空间转换,如BGR↔Gray,BGR↔HSV等 追踪视频中特定颜色的物体 OpenCV函数:cv2.cvtColor(),cv2.inRange() 消除票据中的红色印章 教程 颜色空间转换 ...
- 如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
如何在OpenCV中为InRange阈值选择颜色的最佳HSV值 1. 效果图 2. 源码 参考 之前的博客介绍了如何使用Python,OpenCV通过HSV颜色空间转换检测对象,并进行轨迹追踪.怎么选 ...
- python opencv 检测特定颜色
python opencv 检测特定颜色 import cv2 import numpy as npcap = cv2.VideoCapture(0)# set blue thresh 设置HSV中蓝 ...
- Opencv inRang() 和HSV色彩空间表
文章目录 1. 常规使用 2. HSV颜色解释和求值 3. 将某一个RGB颜色转为对应的HSV表示 参考Opencv文档,点击 这里 1. 常规使用 想通过cv2.inRange()筛选颜色区域,一般 ...
- python opencv选取特定颜色区域
import cv2 import numpy as np # 回调函数,x表示滑块的位置,本例暂不使用 def nothing(x):pass def ColorDetector(img, lowe ...
最新文章
- linux删除指定创建时间文件(文件夹)脚本
- HTTPS 接入优化建议
- 赛马问题,毒药问题,倒水问题等智力题
- PHP在Windows环境下获取GMT时间
- Leet Code OJ 26. Remove Duplicates from Sorted Array [Difficulty: Easy]
- 在ubuntu 16.04里使用python—scrapy将爬取到的数据存到mysql数据库中的一些随笔
- 威海二职工业机器人专业_现在各大专开设的工业机器人专业前景如何?
- grootjs 简明教程
- python 多核并行计算_嫌Python太慢?并行运算Process Pools三行代码给你4倍提速!
- Java 初始化块
- Windows 7密码重设盘的内部原理浅析
- C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码
- 在mysql中怎么存储表情符号,如何在MySQL数据库中存储表情符号字符
- 教你如何用java开发Alexa语音设备。全程详细介绍。
- android手机进入动画,安卓用户必读,如何进入手机开发者模式,以及你必用的功能!...
- [NOIP 2009] 细胞分裂
- 线程、进程和协成对比
- 打开窗,让阳光洒进来
- 接口测试[PostMan]
- 2021高考辽宁英语成绩查询,2021年辽宁高考英语满分多少分?
热门文章
- 我们应该为了爱,还是为了钱而找工作?
- 【vim】vim行首加入某字符
- [Jo厨]Jupyter Notebook+VsCode+豆沙绿主题
- python 打印数组第一行_打印数组中的第一个值而不是只打印第一个字母?(Python)...
- 转码机器人(微信转码,小程序转码)
- 搜狗输入法vscode 自动繁体_如何解决VSCode Vim中文输入法切换问题?
- 无线链接IC-市场现状及未来发展趋势
- 计算机开机控制信号,笔记本电脑开机及信号电路故障维修
- 一个简单的三极管音频放大电路
- 第一代至第五代计算机分别是,计算机应用基础教案—计算机的分类与发展(中职教育)...