- 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()
輸出
廣告