Opencv Python 简明教程
OpenCV Python - Histogram
直方图显示了图像中的强度分布。它在 X 轴上绘制像素值(0 至 255),在 Y 轴上绘制像素数。
通过使用直方图,可以理解指定图像的对比度、亮度和强度分布。直方图中的柱状条表示 X 轴上值的增量部分。
在我们的案例中,它是像素值,默认柱状条大小为 1。
在 OpenCV 库中,函数 cv2.calcHist() 根据输入图像计算直方图。函数的命令如下 −
cv.calcHist(images, channels, mask, histSize, ranges)
Parameters
函数 cv2.calcHist() 的参数如下 −
-
images − 这是 [img] 中的 uint8 或 float32 类型的源图像,用方括号表示。
-
channels − 这是用于计算直方图的通道索引。对于灰度图像,其值为 [0]。对于 BGR 图像,可以传递 [0]、[1] 或 [2] 来计算每个通道的直方图。
-
mask − 掩码图像指定为全图的 “None”。对于图像的特定区域,必须为其创建一个掩码图像,并将其指定为掩码。
-
histSize − 这表示 BIN 计数。
-
ranges − 通常情况下为 [0,256]。
Example
通过以下程序计算图像的每个通道的直方图(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()