直方圖是一種對圖像亮度分布的統計表示,它顯示了圖像中每個灰度級別的像素數量。在OpenCV中,你可以使用cv2.calcHist()
函數計算直方圖。
以下是一個簡單的示例,演示如何計算和繪制圖像的直方圖:
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 讀取圖像
img = cv2.imread(r"C:\Users\mzd\Desktop\opencv\2.jpg", cv2.IMREAD_GRAYSCALE)
# 計算直方圖
hist = cv2.calcHist([img], [0], None, [256], [0, 256])# 繪制直方圖
plt.plot(hist)
plt.title('Histogram')
plt.xlabel('Pixel Value')
plt.ylabel('Frequency')
plt.show()# 顯示原始圖像
cv2.imshow('Image', img)# 等待用戶按下任意鍵
cv2.waitKey(0)
cv2.destroyAllWindows()
在這個示例中,cv2.calcHist()
函數用于計算圖像的直方圖。它的參數包括:
[img]
: 輸入圖像,可以是多通道圖像,但在這里我們使用灰度圖像。[0]
: 通道索引,對于灰度圖像只有一個通道,所以使用 0。None
: 掩碼,通常設置為 None。[256]
: 直方圖的 bin 數量,表示灰度級別的數量。[0, 256]
: 像素值的范圍。
繪制直方圖使用了 Matplotlib 庫,可以根據需要選擇其他繪圖工具。
直方圖有助于理解圖像的亮度分布,可以用于調整圖像的對比度、亮度等。