python进行HSV颜色空间转换

2025-10-20 12:16:20

1、色调(Hue)、饱和度(Saturation)、亮度(Value)三个分量构成,

H 表示色调 也有叫色相的 红绿蓝 这些。用度数表示红0度,绿120度,蓝240度。从红--蓝(或者红紫) ,opencv里 范围:0-180

S 代表饱和度, 纯色占的比例,表达深浅度(0-100%)  比如深红 品红  0-255

V 亮度 (0-100%)  0-255

import cv2

import numpy as np

image = cv2.imread('c:\\meiping1.png')

先展示源图情况。

python进行HSV颜色空间转换

2、转化成HSV 

HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

cv2.imshow('HSV', HSV)

分离HSV通道 并显示

H, S, V = cv2.split(HSV)cv2.imshow('H', H)cv2.imshow('S', S)cv2.imshow('V', V)print(H)print(S)print(V)

HSV出来是这个效果还是有点没想到,

python进行HSV颜色空间转换

3、H 取值:

[[ 80  80  70 ...  93  96  95]

 [ 84  70  80 ...  93  86  90]

 [ 83  84  80 ... 100  90  96]

 ...

 [ 80  90  84 ... 160 105 113]

 [ 80  95  90 ...  90  80  90]

 [ 80 120 120 ...  60  80  68]]

这表示的是H通过到颜色数字,度数。图片把他们当灰度图显示了。

其实这用该是表示H色调.

python进行HSV颜色空间转换

4、S: 表达颜色深浅程度

[[ 4  4  4 ... 13  7  9]

 [ 7  4  4 ... 13 12  9]

 [ 5  7  8 ...  8  7  7]

 ...

 [ 5 10 17 ...  5  7  7]

 [10 10 12 ...  7 11  4]

 [ 5  3  7 ...  2  6  7]]

python进行HSV颜色空间转换

5、V: 反应image图像亮度情况

[[186 187 191 ... 177 183 178]

 [187 189 192 ... 179 177 177]

 [187 188 190 ... 183 178 182]

 ...

 [154 155 153 ... 141 145 138]

 [155 153 150 ... 140 137 141]

 [154 154 154 ... 143 136 140]]

python进行HSV颜色空间转换

6、因为要使用cv2.inRange()函数,这个函数挺有意思,以后还要用到后续再说,它类似阈值处理。

介于第二和第三参数之间的 置255,其他的置0  这个比较重要!

lower_red = np.array([30, 30, 30])upper_red = np.array([225, 225, 225])

mask = cv2.inRange(HSV, lower_red, upper_red) cv2.imshow('mask', mask)

果然是二值图像!

效果还不错

python进行HSV颜色空间转换

7、最后利用以前用过的与 加上掩码图,看一下效果。

滤掉了一些颜色,保留了一些 有点特效的意思。

maskAnd = cv2.bitwise_and(image, image, mask=mask)cv2.imshow('resource', image)cv2.imshow('maskAnd', maskAnd)cv2.waitKey(0)cv2.destroyAllWindows()

对比源图和效果图 

python进行HSV颜色空间转换

python进行HSV颜色空间转换

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢