一、彩色模型
- 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度)。
- RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。
而HSV模型更符合人描述和解释颜色的方式,HSV的彩色描述对人来说是自然且非常直观的。
二、HSV模型
- HSV模型中颜色的参数分别是:色调(H:hue),饱和度(S:saturation),亮度(V:value)。
由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
H | 色调 指光的颜色 | [0,180] 红色:0, 黄色:30, 绿色:60, 蓝色:120 |
S | 饱和度 指色彩的深浅 | [0,255] 饱和度为0时变为灰度图像。 |
V | 亮度 指光的明暗 | [0,255] 亮度为0时,图像为纯黑色。亮度越大,图像越亮。 |
三、获取颜色平均HSV值
import cv2
# 读取BGR图像IMREAD_COLOR,1,将图像转换成3通道BGR彩色图像
img = cv2.imread('d:\\OpenCVpic\\HappyFish.jpg',1)
cv2.imshow('img', img)
hsv_image = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# 分离H、S、V通道
h_channel, s_channel, v_channel = cv2.split(hsv_image)
# # 显示转换后的HSV图像
# cv2.imshow('HSV Image', hsv_image)
height,width,c = img.shape
print("x,y=", height,width)
cnt=0
h_values=0
s_values=0
v_values=0
# 遍历每一个像素点
for y in range(width):
for x in range(height):
h_value = h_channel[x, y]
s_value = s_channel[x, y]
v_value = v_channel[x, y]
if (h_value==0) and (s_value==0) and (v_value==0):
continue
else:
cnt+=1
h_values+=h_value
s_values+=s_value
v_values+=v_value
meanH=h_values/cnt
meanS=s_values/cnt
meanV=v_values/cnt
print("Cnt:", cnt)
print("H Value:", meanH)
print("S Value:", meanS)
print("V Value:", meanV)
cv2.waitKey()
cv2.destroyAllWindows()
图像
-
平均HSV值
输出数据
网友评论