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]。对于彩色图像,可以传递[0]、[1]或[2]来计算每个通道的直方图。

  • mask - 给定的遮罩图像为”None”表示整个图像。对于图像的特定区域,您需要为其创建一个遮罩图像并将其作为遮罩传递。

  • histSize - 这表示BIN的数量。

  • 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()

输出

OpenCV Python 直方图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程