【OpenCV人脸检测】2. 色彩空间及其转换

【 1. 色彩空间 】

  • 色彩空间(Color space)是对色彩的组织方式,是坐标系统和子空间的阐述,位于系统的每种颜色都有单个点表示。

  • 目前,色彩空间已经有上百种表示方式,被采用的大多数色彩空间都是面向硬件或面向应用的,大部分只是局部的改变或专用于某一领域。

  • RGB色彩空间

  • 使用红色、绿色和蓝色这三种原色生成不同的颜色,这些颜色可以组成了一个色彩空间,称为RGB(Red Green Blue)色彩空间
  • OpenCV中默认的色彩空间是BGR。BGR与RGB的区别只是三个颜色信道的位置发生了变化,实际上原理相同。
    ( 为什么是BGR而不是RGB呢?原因在于当时主流的摄像头制造商和软件供应商都普遍使用这种BGR格式,所以所以一开始时OpenCV采用的就是BGR,然后沿用至今。)
  • RGB是依据人眼识别的颜色定义出的空间,可表示大部分颜色。它是最通用的面向硬件的色彩空间。该色彩空间用于彩色监视器和一大类彩色视频摄像。

完整的RGB色彩空间图:
在RGB色彩空间中,将蓝色的量定义为X坐标轴、红色的量定义为Y坐标轴、绿色的量定义为Z坐标轴,就可以得到一个三维空间。所以每种颜色在这个三维空间中都有唯一的一个点与其对应。
在这里插入图片描述

  • HSV与HSL色彩空间

在科学研究一般不采用RGB色彩空间,它将色调,亮度,饱和度三个量放在一起表示,很难分开,这样难以对其进行数字化的调整。所以为了更好的数字化处理颜色,提出了HSVHSL两个色彩空间。

HSV色彩空间中,H是色调(hue),S是饱和度(saturation), V是明度(value)。
HSL色彩空间中,H是色调(hue),S是饱和度(saturation),L是亮度(lightness) 。

  • 灰度空间

  • 在OpenCV的灰度空间中,和一般的色彩空间相同,每一个颜色都有三个量,但是只有第一个亮度有值,所以表示为(亮度,0,0)。
  • 其中,亮度是根据如下灰度公式计算而得:
    G r a y = R ∗ 0.299 + G ∗ 0.587 + B ∗ 0.114 Gray = R*0.299 + G*0.587 + B*0.114 Gray=R0.299+G0.587+B0.114
  • 人脸识别需要先对图片进行灰度处理的原因:
    识别人脸,最关键的因素是梯度,梯度代表着边缘,用灰度图计算梯度,可以简化矩阵, 提高运算速度。而颜色信息,很容易受到光照等因素的影响,同类的物体颜色有很多变化,所以颜色本身难以提供关键信息。

【 2. 色彩空间转换 】

在OpenCV中有超过150种色彩空间转换的方法。但是我们经常用到的是以下两种:

  1. BGR空间到Gray空间 的转换;
  2. BGR空间到HSV空间 的转换。
  • 函数:
cv2.cvtColor(图片对象,转换类型)

其中的转换类型:
对于BGR到Gray的转换,为cv2.COLOR_BGR2GRAY类型。
对于BGR到HSV的转换,为cv2.COLOR_BGR2HSV类型。

  • 范例:
import cv2 as cv
img = cv.imread('picture.jpg') # 读取图片

newpicture = cv.cvtColor(img, cv.COLOR_BGR2HSV) # 将图片的色彩空间由BGR转换为HSV。
# newpicture = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 将图片的色彩空间由BGR转换为GRAY。

cv.imshow('cute boy',newpicture) # 窗口展示图片
cv.waitKey(0)  # 等待用户关闭图片窗口
cv.destroyAllWindows() # 销毁创建的所有窗口

原图:
在这里插入图片描述
灰度图片:
在这里插入图片描述
HSV图片:
在这里插入图片描述

#获取到OpenCV提供的所有转换类型: 。。有问题的代码。。。。
import cv2
flags=[i for in dir(cv2) if i startswith('COLOR_')]
print(flags)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MR_Promethus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值