1. 说明

 有时候需要从图像中判断某种颜色,或者获取某个颜色区域,此时常用HSV色板判断。因为在HSV的色彩空间中,只需要判断颜色通道即可。本篇介绍HSV色板,及其在python中的转换和使用方法。

2. 色板

(1) RGB

 三个通道,红色Red, 绿色Green, 蓝色Blue,值越大颜色越大,当三个值都大时为白色,三个值都为0时为黑色。

(1) HSV

 三个通道,HSV(Hue, Saturation, Value)是根据颜色的直观特性创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)。

常用的色板_灰度图

(1) GRAY
 灰度图,只有一个通道。

3. 图示代码

import cv2 as cv
from matplotlib import pyplot as plt
% matplotlib inline

img = cv.imread('/tmp/ff.jpeg')
rgb = cv.cvtColor(img, cv.COLOR_BGR2RGB)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
plt.figure(figsize=(9,7), dpi=800)
plt.subplot(3, 3, 1), plt.imshow(rgb), plt.title("base")
plt.subplot(3, 3, 2), plt.imshow(rgb[:,:,0],'gray'), plt.title("red")
plt.subplot(3, 3, 3), plt.imshow(rgb[:,:,1],'gray'), plt.title("green")
plt.subplot(3, 3, 4), plt.imshow(rgb[:,:,2],'gray'), plt.title("blue")
plt.subplot(3, 3, 5), plt.imshow(gray,'gray'), plt.title("gray")
plt.subplot(3, 3, 6), plt.imshow(hsv[:,:,0],'gray'), plt.title("H")
plt.subplot(3, 3, 7), plt.imshow(hsv[:,:,1],'gray'), plt.title("S")
plt.subplot(3, 3, 8), plt.imshow(hsv[:,:,2],'gray'), plt.title("V")
plt.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9, hspace=0.1, wspace=0.3)

plt.show()

4. 图示效果

常用的色板_灰度图_02

5. 分析

 这里大多数的图和想象中差不多,比较特别的是H图,可以看到同样的底色白色,在H图中显示出很大差异。

 在判断一些图像成份时,可以采取多种标准,比如用灰度图(gray)或者亮度图(V)判断其是否为白色或浅色,而在颜色较深的区域再去判断其具体然调(H)

 当V大而S小时,即是白色。