1前言

在图像处理中,最常用的颜色空间是RGB模型,常用于颜色显示和图像处理,三维坐标的模型形式,非常容易被理解。

而HSV模型,是针对用户观感的一种颜色模型,侧重于色彩表示,什么颜色、深浅如何、明暗如何。第一次接触HSV,书本里首先抛出的是一个圆锥模型,由于很少使用HSV,所以印象不深刻,但看一些资料时,HSV的概念时不时出来骚扰一些人的神经,所以,弄清楚HSV与RGB的关系,建立直观的印象是很有必要的。
图像处理–RGB与HSI颜色模型的转换方法介绍
这篇博客写的很全

  1. RGB模型。


原点到白色顶点的中轴线是灰度线,r、g、b三分量相等,强度可以由三分量的向量表示。

用RGB来理解色彩、深浅、明暗变化:

色彩变化: 三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线

深浅变化:RGB顶点和CMY顶点到原点和白色顶点的中轴线的距离

明暗变化:中轴线的点的位置,到原点,就偏暗,到白色顶点就偏亮

PS: 光学的分析
三原色RGB混合能形成其他的颜色,并不是说物理上其他颜色的光是由三原色的光混合形成的,每种单色光都有自己独特的光谱,如黄光是一种单色光,但红色与绿色混合能形成黄色,原因是人的感官系统所致,与人的生理系统有关。
只能说“将三原色光以不同的比例复合后,对人的眼睛可以形成与各种频率的可见光等效的色觉。”

2.HSV空间
HSV颜色空间模型是倒锥形模型:

这个模型是按色调、饱和度、明暗来描述的。

H值代表色调、S值代表饱和度、V值代表亮度。

在圆锥上,角度代表色调H,饱和度S表示为点到中心竖线的距离,而亮度值V用中心竖线表示。

HSV对用户来说是一种直观的颜色模型。我们可以从一种纯彩色开始,即指定彩色角H,并让V=S=1,然后我们就可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小v而s不变,同样增加白色可以减小S而V不变。例如,要想得到深蓝色,V=0.4 S=1 H=240,要想得到淡蓝色,V=1 S=0.4 H=240.

HSV在用于指定颜色分割时,有比较大的作用。

颜色对应的图像分割,需要将1号颜色所对应的H值,S值,V值的阈值逼近出来,2号颜色对应区域的H值,S值,V值的阈值确逼近出来,3号颜色对应区域的H值,S值,V值的阈值逼近出来。

# -*- coding: utf-8 -*-
"""
Created on Fri Dec 27 16:28:30 2019
在想要分割的物体上用鼠标单击几下,然后按任意键退出。
@author: yuan
"""
import cv2
import numpy as np
import matplotlib.pyplot as pltimg=cv2.imread("./Images/lvse.jpg")
lower=np.array([255,255,255])
upper=np.array([0,0,0])
def read_rgb(event,x,y,flags,param):global lower,upperif event==cv2.EVENT_LBUTTONDBLCLK:print('rgb',img[x,y])# 创建图像与窗口并将窗口与回调函数绑定hsv_color=cv2.cvtColor(np.uint8([[img[x,y]]]),cv2.COLOR_BGR2HSV)print('hsv',hsv_color[0][0])new_hsv=np.array([list(hsv_color[0][0]),list(lower)])print('new_hsv',new_hsv)lower=np.min(new_hsv,axis=0)        new_hsv=np.array([list(hsv_color[0][0]),list(upper)])print('new_hsv',new_hsv)upper=np.max(new_hsv,axis=0)print('lower:',lower,'upper:',upper)
cv2.namedWindow('image')
cv2.setMouseCallback('image',read_rgb)
while(1):cv2.imshow('image',img)if cv2.waitKey(20)&0xFF==27:  #ESC to quit!!!!1 cv2.destroyAllWindows()breakhsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# 根据阈值构建掩模
mask=cv2.inRange(hsv,lower,upper)
# 对原图像和掩模进行位运算
res=cv2.bitwise_and(img,img,mask=mask)plt.figure(1)
#第一行第一列图形
img_show=cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #change BGR to RGB before show it
ax1 = plt.subplot(1,3,1)
plt.sca(ax1)
plt.imshow(img_show)
plt.title("artwork")
#第一行第二列图形
ax2 = plt.subplot(1,3,2)
plt.sca(ax2)
plt.imshow(mask,cmap="gray")
plt.title("mask")
#第一行第3列图形
res_show=cv2.cvtColor(res,cv2.COLOR_BGR2RGB) #change BGR to RGB before show it
ax3 = plt.subplot(1,3,3)
plt.sca(ax3)
plt.imshow(res_show)
plt.title("reault")plt.show()

参考
【1】https://blog.csdn.net/zuoanhuahai/article/details/80989441

HSV颜色分割,RGB与HSV颜色空间的关系相关推荐

  1. C++ OpenCV 基于HSV颜色分割区域、获取目标

    C++ OpenCV 基于HSV颜色分割区域.获取目标 读取图片 // An highlighted block Mat img = imread("E:/Data_image/螺丝-线1/ ...

  2. 机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图

    目录 1 颜色特征 1.1 RGB色彩空间 1.2 HSV色彩空间 1.3 Lab色彩空间 2 使用opencv-python对图像颜色特征提取并绘制直方图 2.1 RGB颜色特征和直方图 2.2 H ...

  3. matlab hsv颜色分割,车牌定位matlab程序:通过hsv彩色分割方式定位车牌

    最近看了<基于数字图像处理的车牌识别研究>这篇论文,对车牌识别知识讲的很仔细,推荐. 1.(摘自<基于数字图像处理的车牌识别研究>) 通过对大量车牌图像的分析,可以发现对于具有 ...

  4. matlab中rgb转hsv,matlab实现RGB与HSV(HSB)、HSL和HSI的色彩空间互转

    rgb2hsv,hsv2rgb RGB(HSL) 1. RGB→HSL的算法描述 步骤1: 把RGB值转换成[0,1]中数值 例:R=0.83, G=0.07, B=0.07 步骤2: 找出R, G和 ...

  5. 六、HSV颜色空间应用实例——颜色分割提取与替换

    教程汇总:python基础入门系列 通过之前的章节(四.OpenCV颜色空间--HSV颜色模型),我们已经初步认识了HSV颜色空间的特性与优势,现在就来看两个典型的应用实例,颜色分割提取 与 颜色替换 ...

  6. HSV颜色模型及颜色分量范围

    转载于:https://www.cnblogs.com/wangyblzu/p/5710715.html (如侵权请联系删除) HSV颜色模型 HSV(Hue, Saturation, Value)是 ...

  7. OpenCV中HSV颜色模型及颜色分量范围

    HSV颜色模型 HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)..这 ...

  8. [计算机视觉]入门,光,RGB和HSV转换

    我的博客:https://blog.csdn.net/qq_41806966 github地址:https://github.com/1711680493 点我进入github 进军 AI 界 什么是 ...

  9. RGB和HSV相互转换

    RGB和HSV相互转换 目录 RGB和HSV相互转换 1. RGB2HSV 像素级转换 图像级转换(调cv库) 图像级转换(调Pillow库) HSV2RGB 像素级转换 图像级转换(调cv库) 图像 ...

最新文章

  1. 断点续传了解一下啊?
  2. web10 动态action的应用
  3. WIN下Nginx缓存加速配置方法
  4. SkipList和java中ConcurrentSkipListMap的实现
  5. 转:ASP.Net下两种全局变量的设置和读取方法
  6. 2013腾讯编程马拉松初赛(3月20日)
  7. sqlite 查询 支持多用户同时_SQLite支持多进程同时操作数据库文件吗?
  8. windowXP 任务计划无法启动 错误代码:0X80041315
  9. 经济学建模软件 python_从python创建“经济学人”风格的图形
  10. codevs 3981 动态最大子段和
  11. 从0-1教你大屏制作!实时数据处理+零代码,它的可视化堪比python
  12. 10. 在constructors内阻止资源泄露
  13. html4如何插背景音乐,HTML插入背景音乐方法【全】
  14. win10系统设置护眼色 word2016页面显示失败
  15. 智能优化算法学习总结
  16. python 自动玩 连连看 外挂
  17. 化妆品选购指南_痘痘肌专属
  18. 快速学习JasperReport-模板工具Jaspersoft Studio
  19. 启用邪恶-使用XmlSerializer和一些魔术在Xml中隧道化Xml
  20. java的高精度大数字运算的问题

热门文章

  1. IPhone触摸设计:拇指操作的“热区与死角”
  2. mac下安装cobra
  3. 南京金融python培训班
  4. MTK android11 新增按键流程(framework)
  5. 单点登录系统设计及实现
  6. 计算机相关专业学生必读书单
  7. # Python+SQLite## 医院住院信息管理软件
  8. flutter显示图标_flutter 引入第三方 Icon 图标(以阿里图标库为例)
  9. LocaSpaceViewer:自定义图源与无偏影像下载
  10. 接口文档规范有哪些?