美文网首页
Python:获取颜色平均HSV值

Python:获取颜色平均HSV值

作者: 大龙10 | 来源:发表于2023-11-28 07:25 被阅读0次

    一、彩色模型

    • 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度)。
    • RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。
      而HSV模型更符合人描述和解释颜色的方式,HSV的彩色描述对人来说是自然且非常直观的。

    二、HSV模型

    • HSV模型中颜色的参数分别是:色调(H:hue),饱和度(S:saturation),亮度(V:value)。
      由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
    \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()
    
    
    图像
    • 平均HSV值


      输出数据

    相关文章

      网友评论

          本文标题:Python:获取颜色平均HSV值

          本文链接:https://www.haomeiwen.com/subject/qhbawdtx.html