颜色空间转换

一. 关于HSV颜色空间

参考:http://blog.csdn.net/wudaijun/article/details/9964091

HSV颜色模式是除了RGB颜色模式之外的另一种流行的颜色模式,RGB被广泛运用于计算机中,而HSV则用在电视显示方面。它更符合人们对颜色的描述(什么颜色(H),深浅度如何(S),亮度如何(V))。其实在电视机上菜单中的饱和度就是S,亮度就是V。

  • H:色相,色度,色彩,也就是我们平时说的颜色。如红,黄,洋红等。在HSV模型中,用度数描述,其中红色对于0度,绿色对于120度,蓝色对应240度。
  • S:饱和度,色彩的深浅度(0-100%)
  • V:色调,纯度,色彩的亮度(0-100%)

    颜色空间转换_第1张图片

    在模型2中:

    • H是色彩点在对应圆形切面上与红色半径(对于H=0度)所形成的圆心角。
    • S是色彩点到所在圆形切面圆心的距离与该圆半径的比例值,在圆锥表面上S=1,在圆心处S=0
    • V是色彩点所在圆形切面到圆锥顶点的距离。在顶面上V=1 顶点V=0

关键点:
- 当S=1 V=1时,H所代表的任何颜色被称为纯色;
- 当S=0时,颜色最浅,最浅被描述为灰色(灰色也有亮度,黑色和白色也属于灰色),灰色的亮度由V决定,此时H无意义;
- 当V=0时,颜色最暗,最暗被描述为黑色,因此此时H(无论什么颜色最暗都为黑色)和S(无论什么深浅的颜色最暗都为黑色)均无意义。
下面是当H=0度 即为红色时,S和V组成的平面:
颜色空间转换_第2张图片

HSV基本颜色分量范围:
一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。
H: 0 — 180
S: 0 — 255
V: 0 — 255
此处把部分红色归为紫色范围:
颜色空间转换_第3张图片

二. 转换颜色空间

import cv2
import numpy as np
# 显示所有可用的flag
# for i in dir(cv2):
#     if(i.startswith('COLOR_')):
#         print(i)
BGR = cv2.imread("E:dog.jpg")
Gray = cv2.cvtColor(BGR,cv2.COLOR_BGR2GRAY)   #BGB->Gray
HSV = cv2.cvtColor(BGR,cv2.COLOR_BGR2HSV)  #BGB->HSV

cv2.imshow("BGR",BGR)
cv2.imshow("Gray",Gray)
cv2.imshow("HSV",HSV)
cv2.waitKey(0)

在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0, 255]。

你可能感兴趣的:(Opencv)