- OpenCV Python 教程
- OpenCV Python - 主页
- OpenCV Python - 概述
- OpenCV Python - 环境
- OpenCV Python - 读取图像
- OpenCV Python - 写入图像
- OpenCV Python - 使用 Matplotlib
- OpenCV Python - 图像属性
- OpenCV Python - 位运算
- OpenCV Python - 形状和文本
- OpenCV Python - 鼠标事件
- OpenCV Python - 添加轨迹栏
- OpenCV Python - 调整大小和旋转
- OpenCV Python - 图像阈值
- OpenCV Python - 图像过滤
- OpenCV Python - 边缘检测
- OpenCV Python - 直方图
- OpenCV Python - 颜色空间
- OpenCV Python - 转换
- OpenCV Python - 图像轮廓
- OpenCV Python - 模板匹配
- OpenCV Python - 图像Pyramid
- OpenCV Python - 图像相加
- OpenCV Python - 图像混合
- OpenCV Python - 傅里叶变换
- OpenCV Python - 捕获视频
- OpenCV Python - 播放视频
- OpenCV Python - 视频图像
- OpenCV Python - 来自图像的视频
- OpenCV Python - 人脸检测
- OpenCV Python - Meanshift/Camshift
- OpenCV Python - 特征检测
- OpenCV Python - 特征匹配
- OpenCV Python - 数字识别
- OpenCV Python 资源
- OpenCV Python - 快速指南
- OpenCV Python - 资源
- OpenCV Python - 讨论
OpenCV Python - 直方图
直方图显示图像中的强度分布。它在 X 轴上绘制像素值(0 到 255),在 Y 轴上绘制像素数。
通过使用直方图,可以了解指定图像的对比度、亮度和强度分布。直方图中的 bin 表示 X 轴上值的增量部分。
在我们的例子中,它是像素值,默认的 bin 大小是 1。
在 OpenCV 库中,函数cv2.calcHist()函数根据输入图像计算直方图。该功能的命令如下 -
cv.calcHist(images, channels, mask, histSize, ranges)
参数
cv2.calcHist ()函数的参数如下 -
images - 它是 uint8 或 float32 类型的源图像,位于方括号中,即“[img]”。
Channels - 它是我们计算直方图的通道的索引。对于灰度图像,其值为[0]。对于BGR图像,可以通过[0]、[1]或[2]来计算每个通道的直方图。
mask - 对于完整图像,掩模图像被指定为“无”。对于图像的特定区域,您必须为其创建蒙版图像并将其作为蒙版。
histSize - 这代表我们的 BIN 计数。
范围- 通常为 [0,256]。
使用 Matplotlib 绘制直方图
可以借助 Matplotlib 的pyplot.plot()函数或调用OpenCV 库中的Polylines()函数来获得直方图。
例子
以下程序计算图像(lena.jpg)中每个通道的直方图并绘制每个通道的强度分布 -
import numpy as np import cv2 as cv from matplotlib import pyplot as plt img = cv.imread('lena.jpg') color = ('b','g','r') for i,col in enumerate(color): hist = cv.calcHist([img],[i],None,[256],[0,256]) plt.plot(hist, color = col) plt.xlim([0,256]) plt.show()