python+opencv系列教程(4)——色彩空间1

  • A+
所属分类:大数据

1 色彩空间

1.1 RGB

红绿蓝 三色,也是大家熟悉光学三原色

RGB 使用加色模式,也就是默认是黑色,三原色相加获得白色

python+opencv系列教程(4)——色彩空间1python+opencv系列教程(4)——色彩空间1

上图可以看到灰度图在正方体对角线上,即三个通道(轴)的值相等时,值越大越白

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

1.2 HSV

Hue(色调、色相)Saturation(饱和度、色彩纯净度)Value(明度)

HSV模型,是针对用户观感的一种颜色模型,侧重于色彩表示,什么颜色、深浅如何、明暗如何。HSV在用于指定颜色分割时,有比较大的作用。

1.3 HIS

当人观察一个彩色物体时,用色调、饱和度、亮度来描述物体的颜色。其中H定义颜色的频率,称为色调;S表示颜色的深浅程度,称为饱和度;I表示强度或亮度。

模型优点

1.在处理彩色图像时,可仅对I分量进行处理,结果不改变原图像中的彩色种类;

2.HSI模型完全反映了人感知颜色的基本属性,与人感知颜色的结果一一对应,因此,HSI模型被广泛应用于人的视觉系统感知演的的图像表示和处理系统中。

1.4 YUV(也称YCrCb)

YUV(也称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL制式)。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只占用极少的带宽,而RGB要求三个独立的视频信号同时传输。YUV 主要是用在彩色电视中,用于模拟信号表示。YCbCr 用在数字视频、图像的压缩和传输,如 MPEG、JPEG。在YUV中,“Y”代表明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面——色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异,而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异,此即所谓的色差信号,也就是我们常说的分量信号(Y、R-Y、B-Y)。

2 代码

  1. import cv2 as cv
  2. def color_space_demo(image):
  3.     gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  4.     cv.imshow("gray", gray)
  5.     hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
  6.     cv.imshow("hsv", hsv)
  7.     yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
  8.     cv.imshow("yuv", yuv)
  9.     ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
  10.     cv.imshow("ycrcb", ycrcb)
  11. src = cv.imread("C:/Users/Admin/Desktop/1.jpg")  # 读取图像
  12. cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)  # 创建显示图像的窗口
  13. cv.imshow("input image", src)  # 显示图片到特定的窗口中
  14. color_space_demo(src)
  15. cv.waitKey(0)  # 等待用户操作,0为一直等待,5000为等待用户操作5s
  16. cv.destroyAllWindows()  # 释放所有内存
  17. print("hello world")

3 讲解

从读取1.jpg图像开始,显示原图到“input image”窗口中,调用color_space_demo函数,将原图数据当作参数传入,首先转换为灰度图并显示,再转换成HSV模型并显示;再转换成YUV模型并显示;再转换成YCrCb模型并显示。

3.1 显示结果

python+opencv系列教程(4)——色彩空间1

Qt大课堂-QtShare

发表评论

您必须登录才能发表评论!