直方图计算及绘制

直方图计算及绘制

图像直方图概述

直方图是对数据进行统计的一种方法, 可以直观表现图像某属性的数值(频率)分布情况, 包括灰度直方图、RGB直方图等相关概念及函数:

◆dims: 需要统计得特征的数目, 如只统计灰度值—dims=1, 统计RGB值—dims=3

◆bins: 每个特征空间子区域段的数目,也可称为组距(简单理解为直方图分成几个柱子组成)

◆range: 每个特征空间的取值范围, 如灰度值取值范围[0, 255]

◆计算直方图函数: cv2.calcHist()
在这里插入图片描述

计算直方图—cv2.calcHist()

在这里插入图片描述
⚫images: 源图像, 输入数组(或数组集), 需要有相同的深度和尺寸
⚫nimages: 输入数组的个数, 即第一个参数中存放图像个数
⚫channels: 需要统计通道的索引, 表示要使用哪个通道或多个通道(属性)
⚫mask: 可选的操作掩码, 如果不为空, 则必须为8位, 并且与图像有一样大小尺寸
⚫hist: 输出的目标直方图
⚫dims: 需要计算的直方图维度, 必须是正数
⚫histSize: 存放每个维度的直方图尺寸的数组, 即bins
⚫ranges: 表示每一维数值的取值范围
⚫uniform: 直方图是否均匀的标识符, 默认值true
⚫accumulate: 累计标识符, 默认值false, 若为true, 直方图在配置阶段不会被清零

安装matplotlib

Matplotlib 是一个 Pthon 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形11
通过 Matolotib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
在这里插入图片描述

灰度直方图示例:

import cv2
import numpy as np
from matplotlib import pyplot as plt
print cv2.version
img = cv2.imread('1.jpg', 0)hist = cv2.calcHist([img], [0],None, [256][0,256])
plt.hist (img.ravel () ,256, [0,256])
plt.show()

在这里插入图片描述

RGB直方图示例:

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2 .imread('2 .jpg')
color = ('b','g!
for i,col in enumerate (color):
    histr = cv2.calcHist([img],[il,None,[256],[0,256]
    plt.plot(histr,color = col)
    plt.xlim([0,256])
plt.show()

在这里插入图片描述

带掩码的直方图示例:

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2 .imread('01.jpg')
mask = np.zeros (img.shape[:2], np .uint8)
mask[130:327,158:473] = 255
color = ('b','g','r' )
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[il ,mask,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0256])
plt.show()

在这里插入图片描述

HS二维直方图示例:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40911806/article/details/130017242