Opencv inRang() 和HSV色彩空间表
文章目录
- 1. 常规使用
- 2. HSV颜色解释和求值
- 3. 将某一个RGB颜色转为对应的HSV表示
参考Opencv文档,点击 这里
1. 常规使用
想通过cv2.inRange()
筛选颜色区域,一般会使用以下方式来使用
import cv2 as cv
import numpy as np
cap = cv.VideoCapture(0)
while(1):# Take each frame_, frame = cap.read()# Convert BGR to HSVhsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# define range of blue color in HSVlower_blue = np.array([110,50,50])upper_blue = np.array([130,255,255])# Threshold the HSV image to get only blue colorsmask = cv.inRange(hsv, lower_blue, upper_blue)# Bitwise-AND mask and original imageres = cv.bitwise_and(frame,frame, mask= mask)cv.imshow('frame',frame)cv.imshow('mask',mask)cv.imshow('res',res)k = cv.waitKey(5) & 0xFFif k == 27:break
cv.destroyAllWindows()
2. HSV颜色解释和求值
HSV颜色表示说明,参考来源在这里,还有这里
表示 | 含义 | 物理度量 | Opencv度量 |
---|---|---|---|
H | hue,色调 | 用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。补色是:黄色60°,青色180°,品红300 | [0,179] |
S | Saturation,饱和度 | 取值范围为0.0~1.0 | [0,255] |
V | Value,亮度 | 取值范围为0.0(黑色)~1.0(白色) | [0,255] |
# 蓝色
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
# 或者蓝色
low_blue = np.array([94, 80, 2])
high_blue = np.array([126, 255, 255])
# 红色
low_red = np.array([161, 155, 84])
high_red = np.array([179, 255, 255])
# 绿色
low_green = np.array([25, 52, 72])
high_green = np.array([102, 255, 255])
# 除白色之外的颜色
low = np.array([0, 42, 0])
high = np.array([179, 255, 255])
这里每种颜色是使用三个值表示的,其实这三个值对应的分别是HSV的三种值,h, s 以及v。
网上可以搜到常见颜色的HSV范围表格,来源:
或者有一些图,来源
3. 将某一个RGB颜色转为对应的HSV表示
其实很简单,只要把一个RGB的一维array变成三维,再去进行颜色转换即可。
>>> green = np.uint8([[[0,255,0 ]]])
# 注意 这里必须是无符号的unit8;类型
>>> hsv_green = cv.cvtColor(green,cv.COLOR_BGR2HSV)
>>> print( hsv_green )
[[[ 60 255 255]]]
获取该点的HSV颜色信息之后,只需要使用 [H-10, 100,100]
和[H+10, 255, 255]
分别作为颜色的上界和下界,就可以去提取特定颜色了。
或者也有人使用
下界:[h-10, s-40, v-40]
,上界:[h+10, s+40, v+40]
对于yellow,green,red,blue,black,white,orange rgb
values.
参考这里
参考文档
- https://docs.opencv.org/3.4/df/d9d/tutorial_py_colorspaces.html
- https://opencv24-python-tutorials.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html#converting-colorspaces
Opencv inRang() 和HSV色彩空间表相关推荐
- HSV色彩空间表和cv2.inRange()的用法
HSV色彩空间表和cv2.inRange()的用法 结合cv2.inRange()可以清晰看到某个颜色区域影象位于影象的什么地方. 用法cv2.inRange(img,low,high),函式会将位于 ...
- RGB到HSV色彩空间转换表
RGB到HSV色彩空间转换表
- OpenCV之 BGR、GRAY、HSV色彩空间色彩通道专题 【Open_CV系列(三)】
文章目录 1.色彩空间 1.1 BGR色彩空间 1.2 GRAY色彩空间 1.3 HSV色彩空间 1.4 空间转换 1.4.1 BGR 转 GRAY 1.4.2 BGR 转 HSV 2. 色彩通道 2 ...
- opencv学习四:色彩空间转换
一.常见的色彩空间 RGB颜色空间 RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R.G.B数值来驱动R.G.B 电子枪发射电子 ...
- RGB色彩空间和HSV色彩空间的理解
RGB色彩空间和HSV色彩空间的理解 本文的结构如下: 1.RGB色彩空间 2.HSV色彩空间(附HSV颜色分量范围表) 3.RGB到HSV的转换的Demo 使用OpenCV实现RGB转HSV,并 ...
- 树莓派视觉小车 -- OpenCV巡线(HSL色彩空间、PID)
目录 试错 试错1:形态学处理 试错2:HSV色彩空间 基础理论 1.HSV与HSL色彩空间 2.PID调节 一.OpenCV图像处理 1.在HSL色彩空间下得到二值图 2. 对二值图形态学处理 3. ...
- OpenCV扫描图像,查找表和时间测量
OpenCV扫描图像,查找表和时间测量 OpenCV扫描图像,查找表和时间测量 目标 我们的测试用例 图像矩阵如何存储在内存中? 高效的方法 迭代器(安全)方法 通过参考返回即时计算地址 核心功能 性 ...
- [Python图像处理] 使用 HSV 色彩空间检测病毒对象
使用 HSV 色彩空间检测病毒对象 前言 检测病毒对象 相关链接 前言 在本节中,我们将学习如何使用 OpenCV 在 HSV 色彩空间中使用特定颜色检测感兴趣对象.我们需要通过指定颜色值范围识别和提 ...
- 什么是HSV色彩空间
BGR色彩空间是基于三基色而言,即红色.绿色.蓝色.而HSV色彩空间则是基于色调.饱和度和亮度而言的. 色调(H)是指光的颜色,例如,彩虹中的赤,橙,黄,绿,青,蓝,紫分别表示不同的色调.在OpenC ...
最新文章
- matlab图像处理命令(一)
- 美团数据平台Kerberos优化实战
- python3.5安装pip_python详细安装pip教程
- js的hasOwnProperty
- Rust: 如何交换Vec类型中数据的位置?
- x01.wos: 纸娃娃系统
- 运行caffe代码 SegNet
- PGP Shredder的使用,加密解密
- JavaScript实现富文本编辑器
- java 建立tlsv1.2报错_Java 7的javax.net.ssl.SSLHandshakeException
- 赵丽颖冯绍峰官宣 | 微博服务器瘫痪!运维:该拿什么拯救我?
- 码医自学法V2.2(附名老中医)
- 字节跳动Android内部学习资料泄露,高级面试题+解析
- 专精特新企业认定条件
- VulnHub Billu_b0x
- Java引入第三方包
- MySQL 数据库管理之 --- 日志查询
- flac如何转换成wav?
- 【07】2.3 程序语言介绍
- jsj中对象之间的赋值