- 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 - 图像金字塔
- OpenCV Python - 图像相加
- OpenCV Python - 图像混合
- OpenCV Python - 傅里叶变换
- OpenCV Python - 捕捉视频
- OpenCV Python - 播放视频
- OpenCV Python - 从视频中提取图像
- OpenCV Python - 从图像生成视频
- OpenCV Python - 人脸检测
- OpenCV Python - 均值漂移/CamShift
- OpenCV Python - 特征检测
- OpenCV Python - 特征匹配
- OpenCV Python - 数字识别
- OpenCV Python 资源
- OpenCV Python - 快速指南
- OpenCV Python - 资源
- OpenCV Python - 讨论
OpenCV Python - 直方图
直方图显示图像中像素强度的分布。它将像素值(0 到 255)绘制在 X 轴上,并将像素数量绘制在 Y 轴上。
通过使用直方图,可以了解指定图像的对比度、亮度和强度分布。直方图中的柱状图表示 X 轴上值的增量部分。
在本例中,它是像素值,默认的柱状图大小为 1。
在 OpenCV 库中,函数 `cv2.calcHist()` 用于计算输入图像的直方图。该函数的命令如下:
cv.calcHist(images, channels, mask, histSize, ranges)
参数
`cv2.calcHist()` 函数的参数如下:
`images` - 它是 uint8 或 float32 类型的源图像,用方括号括起来,即 "[img]"。
`channels` - 它是计算直方图的通道索引。对于灰度图像,其值为 [0]。对于 BGR 图像,您可以传递 [0]、[1] 或 [2] 来计算每个通道的直方图。
`mask` - 对于整幅图像,掩码图像设置为 "None"。对于图像的特定区域,您必须为此创建一个掩码图像并将其作为掩码。
`histSize` - 这代表我们的柱状图数量。
`ranges` - 通常为 [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()
输出
广告