美文网首页
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