📜  Python OpenCV – cv2.calcHist 方法(1)

📅  最后修改于: 2023-12-03 15:34:02.989000             🧑  作者: Mango

Python OpenCV – cv2.calcHist 方法

在图像处理中,图像的直方图是显示其像素值频率分布的图形。 OpenCV中的cv2.calcHist()函数是计算图像直方图的函数之一。它可以帮助我们了解图像中存在哪些颜色以及它们的数量。该方法需要的参数包括图像,通道和直方图的大小和范围。

以下是使用Python OpenCV的 cv2.calcHist()方法计算图像的直方图的步骤:

步骤 1: 导入相关库
import cv2
import numpy as np
from matplotlib import pyplot as plt
步骤 2: 读取图像
img = cv2.imread('your_image_path', 0)
步骤 3: 计算直方图
hist = cv2.calcHist([img], [0], None, [256], [0, 256])

其中:

  • 第一个参数是图像,要用方括号括起来,即“[img]”
  • 第二个参数是通道,我们传递[0]以计算灰度图像的直方图,对于彩色图像,可以使用B, G和R通道计算各自的直方图。
  • 第三个参数是掩模。通常使用“None”。
  • 第四个参数是直方图的大小,通常为256,因为像素值的范围为0到255。
  • 第五个参数是像素值范围。对于灰度图像,它应该是[0,256]。
步骤 4: 绘制图像直方图
plt.hist(img.ravel(),256,[0,256])
plt.title('Histogram')
plt.show()

其中“ img.ravel()”是将图像数组转换为1D数组的方法。

示例

以下是完整的示例:

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

输出结果为:

Histogram of Lena image