美文网首页
46. 彩色图片直方图

46. 彩色图片直方图

作者: 十里江城 | 来源:发表于2019-11-13 08:52 被阅读0次

    关于图片美化部分的解释有直方图 直方图均衡化 亮度增强 磨皮美白 图像滤波 高斯滤波 等11种效果。其中,彩色图片直方图实现与显示见本文以下内容,其余美化效果在之后的文章中解释。

    # 美化章节: 
    # 11种美化效果
    
    import cv2 
    import numpy as np
    
    # 彩色图片直方图方法
    def ImageHist(image, type):
        color = (255, 255, 255)
        windowName = 'Gray'
        if type == 31:
            color = (255, 0, 0)
            windowName = 'B Hist'
        if type == 32:
            color = (0, 255, 0)
            windowName = 'G Hist'
        if type == 33:
            color = (0, 0, 255)
            windowName = 'R Hist'
            
        # 计算直方图   参数:图像:[image] 直方图通道:[0]  掩膜:None  灰度级:[256] 像素范围:0~255
        hist = cv2.calcHist([image], [0], None, [256], [0.0, 255.0])
        # 寻找全局最小最大元素及其对应的下标
        minV, maxV, minL, maxL = cv2.minMaxLoc(hist)
        
        # 创建画布  创建爱零矩阵时第一个参数为shape格式( , ,)
        histImg = np.zeros((256, 256, 3), np.uint8)
        for h in range(256): # 0~255
            # 归一化数据
            intenNormal = int(hist[h] * 256 / maxV) 
            # 绘制不同颜色的直方图 参数:histImg 起始位置 终止位置 颜色
            cv2.line(histImg, (h, 256), (h, 256 - intenNormal), color)
            
        cv2.imshow(windowName, histImg)
        return histImg
    
    
    img = cv2.imread('1.jpg', 1)
    channels = cv2.split(img)
    for i in range(0, 3):
        ImageHist(channels[i], 31 + i)
    cv2.waitKey(0)
    

    各个通道的直方图如下:


    image.png

    相关文章

      网友评论

          本文标题:46. 彩色图片直方图

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