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

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() #销毁所有窗口

OpenCV---色彩空间(一)的更多相关文章

  1. openCV 色彩空间

    ---恢复内容开始--- 1.使用cv2.inrange()获取某个范围内的图像取值,指定某个通道的最小值和最大值 import numpy as np def color_space(image): ...

  2. Python+OpenCV图像处理(四)—— 色彩空间

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  3. 3、OpenCV Python 色彩空间

    __author__ = "WSX" import cv2 as cv import numpy as np def color_space( img ): gray_img = ...

  4. 【图像处理】使用OpenCV+Python进行图像处理入门教程(三)色彩空间

    这篇随笔介绍使用OpenCV进行图像处理的第三章 色彩空间. 3  色彩空间 之前的介绍,大多是基于BGR色彩空间进行的,但针对不同的实际情况,研究人员提出了许多色彩空间,它们都有各自擅长处理的领域. ...

  5. OpenCV源码分析:RGB到其他色彩空间的转换

    1.流程调用图 2.部分代码分析 //模板函数进行颜色空间的转换 template <typename Cvt> void CvtColorLoop(const Mat& src, ...

  6. OpenCV和Matplotlib色彩空间模式不一致的问题

    当用OpenCV读取彩色图像时,OpenCV是以(BGR)的顺序存储图像数据的,而Matplotlib是以(RGB)的顺序显示图像的. 可以用下面的程序来证明这一点 import cv2 import ...

  7. OpenCV笔记(1)(图片读取与现实、色彩空间、基础运算、均值方差、逻辑运算、泛洪填充、均值中值及自定义平滑)

    一.图片读取和显示 import cv2 as cv # 图片读取cv.imread(img_path) car_img = cv.imread("car1.png") # 图片显 ...

  8. python opencv:色彩空间

    RGB色彩空间 常见的色彩空间 色彩空间的转换 cv2.cvtColor(image, 转换选项) 常见的两个颜色转换 HSV与RGB YUV与RGB inRange方法 函数参数: 第一个参数:是原 ...

  9. OpenCV成长之路(2):图像的遍历

    我们在实际应用中对图像进行的操作,往往并不是将图像作为一个整体进行操作,而是对图像中的所有点或特殊点进行运算,所以遍历图像就显得很重要,如何高效的遍历图像是一个很值得探讨的问题. 一.遍历图像的4种方 ...

  10. atitit  opencv apiattilax总结 约500个函数 .xlsx

    atitit  opencv apiattilax总结 约500个函数 .xlsx 1.1. CxCore中文参考手册 1 1.2. 机器学习中文参考手册  knn  svm  1 1.3. CvAu ...

随机推荐

  1. CS小分队第一阶段冲刺站立会议(5月12日)

    昨日成果:2048整体界面效果经组员韩雪冬美化之后档次提升了好几个,我为其添加了保存并显示最高分数的功能. 遇到困难:当我想把access数据库由accdb改成mdb时,发生未知错误 ,导致数据库无法 ...

  2. MacBook Pro 15寸常见问题及修复

    苹果MacBook Pro更换SSD硬盘攻略教程 MacBook pro开机黑屏解决 苹果电脑 MAC PRO 开机黑屏了 MacBook Pro 开机后黑屏,怎么办啊 如果 Mac 无法开机 Mac ...

  3. SpringMVC相关的面试题

    1.什么是springMVC springmvc是spirng框架的一个模块,是一个基于MVC框架的web框架 2.springmvc的流程 a.客户端发送请求 b.前端控制器DispatcherSe ...

  4. iframe高度自适应的6个方法

    原文链接:http://caibaojian.com/iframe-adjust-content-height.html JS自适应高度,其实就是设置iframe的高度,使其等于内嵌网页的高度,从而看 ...

  5. HDU 1754 I Hate It 线段树(单点更新,成段查询)

    题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=1754 题解: 单点更新,成段查询. 代码: #include<iostream> ...

  6. Java JVM多线程

  7. Java单例模式&static成员变量 区别

    当需要共享的变量很多时,使用static变量占用内存的时间过长,在类的整个生命周期. 而对象只是存在于对象的整个生命周期.   //饿汉式 class Single//类一加载,对象就已经存在了. { ...

  8. PAT 甲级 1040 Longest Symmetric String

    https://pintia.cn/problem-sets/994805342720868352/problems/994805446102073344 Given a string, you ar ...

  9. paoding-rose 之 maven配置

    <dependency> <!-- junit 4.7 --> <groupId>junit</groupId> <artifactId>j ...

  10. linux 内核态调试函数BUG_ON()[转]

    一些内核调用可以用来方便标记bug,提供断言并输出信息.最常用的两个是BUG()和BUG_ON(). 当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印.为什么这些声明会导致 oops跟 ...