颜色空间:用三种或者更多特征来指定颜色的方法,被称为颜色空间或者颜色模型

1.RGB(OpenCV中为BGR):

一幅图像由三个独立的图像平面或者通道构成:红、蓝、绿(以及可选项:透明度alpha通道)
每个值代表每个像素的每个分量的度量值,值越高对应于更亮的像素
对应于人眼的三种光锥细胞,所以被广泛使用
RGB色彩空间源于使用阴极射线管的彩色电视,
RGB分别代表三个基色(R-红色、G-绿色、B-蓝色),具体的色彩值由三个基色叠加而成。
在图像处理中,我们往往使用向量表示色彩的值,如(,,)表示黑色、(, , )表示白色。
其中,255表示色彩空间被量化成255个数,最高亮度值为255( = ^ - ,即每个色彩通道用8位表示)。
在这个色彩空间中,有256**256种颜色。RGB色彩空间如下图所示(图片来自百度百科)。是一个包含Red、Green、Blue的三维空间。

2.HSV

推文:OpenCV 自学笔记21. RGB色彩空间和HSV色彩空间的理解

H:-,在OpenCV中被规范为0-180,若是360超出255溢出,所有规划到180,,8位可以保存,是HSV3位保存一致,都是只占一个字节
S和V:在OpenCV中规范化为0-255(一个字节就可以表示)

HSV颜色空间输入面向色度的颜色坐标系统的一种。这种类型的颜色模型接近人类颜色感知的仿真模型。
HSV的三个通道表示色度(H给出的颜色光谱构成的一种度量),饱和度(S给出主波长中的纯光比例,这表明一种颜色距离相同亮度灰度的程度)和纯度(V给出相对于白色光照强度的亮度),对应于直觉上的色彩、明暗和色调。HSV广泛应用于色彩的比较。

OpenCV中的imshow()函数假设图像的颜色以RGB显示,因此其他显示均不正确。所以首先必须将其转换成RGB颜色空间

3.HLS:

HLS属于面向色度的颜色坐标系统中的一种,和之前的HSV类似
用来指定每个通道中的一种颜色的色度值、明暗值、饱和度值
与HSV不同的是HSL定义的一种纯颜色的亮度等于一种中等灰色的亮度
而HSV定义的一种纯颜色的亮度等于白色的亮度

4.YCrCb

该空间广泛用于视频和图像压缩,不能算作纯粹的色彩空间,它是RGB颜色空间的一种解码方式
Y通道表示亮度,而Cr和Cb表示红色差值(在RGB空间中R通道和Y的差值)和蓝色差值(在RGB空间中B通道和Y的差值)各自的色度分量。

5.灰度图

每个像素值只表示灰度信息这一单一信息
RGB[A]准换成灰度:Y=0.299*R+0.587*G+0.114*B
灰度转换为RGB[A]:R=Y,G=Y,B=Y,A=max(ChannelRange)

推文:【OpenCV】笔记(9)——色彩空间和颜色处理

6.YUV

推文:YUV格式分析

Y = .299R + .587G + .114B
U = -.147R - .289G + .436B
V = .615R - .515G - .100B R = Y + .14V
G = Y - .39U - .58V
B = Y + .03U

7.色彩空间api相互转换

import cv2 as cv

def color_space_conv(image):
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) #RGB转灰度图
cv.imshow("gray",gray)
hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) #RGB转HSV
cv.imshow("hsv",hsv)
yuv = cv.cvtColor(image,cv.COLOR_BGR2YUV) #RGB转YUV
cv.imshow("yuv",yuv)
ycrcb = cv.cvtColor(image,cv.COLOR_BGR2YCrCb)#RGB转YCrCb
cv.imshow("ycrcb",ycrcb)
hls = cv.cvtColor(image,cv.COLOR_BGR2HLS) #RGB转HLS
cv.imshow("hls",hls) src = cv.imread("./1.png") #读取图片
cv.namedWindow("RGB",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应
cv.imshow("RGB",src) #通过名字将图像和窗口联系
t1 = cv.getTickCount() #获取时间,用于精度计时,操作系统启动所经过(elapsed)的毫秒数
color_space_conv(src)
t2 = cv.getTickCount()
print((t2-t1)/cv.getTickFrequency()) #getTickFrequency()是获取一秒钟结果的点数,获取秒数
cv.waitKey() #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows() #销毁所有窗口

最新文章

  1. 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
  2. 【php】使用phpdbg来调试php程序
  3. linux下MYSQL备份与恢复
  4. 【Debian百科】巨页
  5. 福州大学 Problem 2169 shadow
  6. 课堂里学不到的C与C++那些事(一)
  7. 安卓2D游戏开发设置
  8. apply和call的区别
  9. Java进阶(二十四)Java List集合add与set方法原理简介
  10. Kafka的CommitFailedException异常
  11. Kail Linux的安装方法
  12. codeforces546C
  13. Elasticsearch 快速入门教程
  14. Oracle初级第一天
  15. GitHub C 和 C++ 开源库的清单(含示例代码)
  16. 透过摩拜和ofo,看产品从0到1时如何取舍需求(转)
  17. Mysql 分区(range,list,hash)转载
  18. 转:zTree树控件实战篇:针对多个下拉加载zTree树应该如何做出合理的配置
  19. [漏洞复现]CVE-2010-2883 Adobe Reader 打开pdf电脑即刻中招
  20. windows访问linux共享文件夹

热门文章

  1. hive 2以上版本启动异常 Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  2. 20181023-10 Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 07
  3. Python:列表操作总结
  4. Windows Forms编程实战学习:第一章 初识Windows Forms
  5. Kotlin在处理GET和POST请求的数据问题
  6. 2nd 本周例行报告
  7. PAT L1-017 到底有多二
  8. 31. Ubuntu15.04系统中如何启用、禁用客人会话
  9. C# 开发人员的函数式编程
  10. 大家好,请问在DELPHI中#13和#10是表示什么含义的?