Python:获取颜色平均HSV值

2023-11-28  本文已影响0人  大龙10

一、彩色模型

二、HSV模型

\color{red}{含义} \color{red}{描述} \color{red}{范围}
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()

图像
上一篇下一篇

猜你喜欢

热点阅读