Python+OpenCV繪制灰度直方圖詳解
1.直方圖的概念
圖像直方圖是反映一個圖像像素分布的統(tǒng)計表,其實(shí)橫坐標(biāo)代表了圖像像素的種類,可以是灰度的,也可以是彩色的??v坐標(biāo)代表了每一種顏色值在圖像中的像素總數(shù)或者占所有像素個數(shù)的百分比。圖像是由像素構(gòu)成,因?yàn)榉从诚袼胤植嫉闹狈綀D往往可以作為圖像一個很重要的特征。
圖像灰度直方圖:
一幅圖像由不同灰度值的像素組成,圖像中灰度的分布情況是該圖像的一個重要特征。圖像的灰度直方圖就描述了圖像中灰度分布情況,能夠很直觀的展示出圖像中各個灰度級所占的多少。圖像的灰度直方圖是灰度級的函數(shù),描述的是圖像中具有該灰度級的像素的個數(shù):其中,橫坐標(biāo)是灰度級,縱坐標(biāo)是該灰度級出現(xiàn)的頻率
歸一化直方圖:
通常會將縱坐標(biāo)歸一化到[0,1]區(qū)間內(nèi),也就是將灰度級出現(xiàn)的頻率(像素個數(shù))除以圖像中像素的總數(shù)?;叶戎狈綀D的計算公式如下:
其中,rk是像素的灰度級,nk是具有灰度rk的像素的個數(shù),MN是圖像中總的像素個數(shù)。
代碼
import cv2 as cv import numpy as np from matplotlib import pyplot as plt #%matplotlib inline def plot_demo(image): plt.hist(image.ravel(), 256, [0, 256]) #image.ravel()#ravel函數(shù)功能是將多維數(shù)組降為一維數(shù)組,統(tǒng)計各個bin的頻次,256:bin的個數(shù),[0, 256]:范圍 plt.show("直方圖") #和OpenCV中的想要的直方圖不同 """ 畫灰度圖直方圖: 繪圖都可以調(diào)用matplotlib.pyplot庫來進(jìn)行,其中的hist函數(shù)可以直接繪制直方圖。 plt.hist(arr, bins=50, normed=1, facecolor='green', alpha=0.75) hist的參數(shù)非常多,但常用的就這五個,只有第一個是必須的,后面四個可選 arr: 需要計算直方圖的一維數(shù)組 bins: 直方圖的柱數(shù),可選項,默認(rèn)為10 normed: 是否將得到的直方圖向量歸一化。默認(rèn)為0 range參數(shù)表示箱子的下限和上限。即橫坐標(biāo)顯示的范圍,范圍之外的將被舍棄 """ def image_hist(image): color = ('blue', 'green', 'red') #圖像三通道 for i, color in enumerate(color): hist = cv.calcHist([image], [i], None, [256], [0, 256]) #繪制各個通道的直方圖 plt.plot(hist, color=color) #定義線的顏色 plt.xlim([0, 256]) #x軸的范圍 plt.show() """ calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) images參數(shù)表示輸入圖像,傳入時應(yīng)該用中括號[ ]括起來 channels參數(shù)表示傳入圖像的通道,如果是灰度圖像,那就不用說了,只有一個通道,值為0, 如果是彩色圖像(有3個通道),那么值為0,1,2,中選擇一個,對應(yīng)著BGR各個通道。這個值也得用[ ]傳入。 mask參數(shù)表示掩膜圖像。如果統(tǒng)計整幅圖,那么為None。 主要是如果要統(tǒng)計部分圖的直方圖,就得構(gòu)造相應(yīng)的掩膜來計算。 histSize參數(shù)表示灰度級的個數(shù),需要中括號,比如[256] ranges參數(shù)表示像素值的范圍,通常[0,256]。此外,假如channels為[0,1],ranges為[0,256,0,180], 則代表0通道范圍是0-256,1通道范圍0-180。 hist參數(shù)表示計算出來的直方圖。 """ src = cv.imread("F:/images/lena.png") cv.namedWindow("input image", cv.WINDOW_AUTOSIZE) cv.imshow("input image", src) plot_demo(src) image_hist(src) cv.waitKey(0) cv.destroyAllWindows()
原圖
二維直返圖
RGB直方圖
到此這篇關(guān)于Python+OpenCV繪制灰度直方圖詳解的文章就介紹到這了,更多相關(guān)Python OpenCV灰度直方圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyTorch中的神經(jīng)網(wǎng)絡(luò) Mnist 分類任務(wù)
這篇文章主要介紹了PyTorch中的神經(jīng)網(wǎng)絡(luò) Mnist 分類任務(wù),在本次的分類任務(wù)當(dāng)中,我們使用的數(shù)據(jù)集是 Mnist 數(shù)據(jù)集,這個數(shù)據(jù)集大家都比較熟悉,需要的朋友可以參考下2023-03-03Python利用卡方Chi特征檢驗(yàn)實(shí)現(xiàn)提取關(guān)鍵文本特征
卡方檢驗(yàn)最基本的思想就是通過觀察實(shí)際值與理論值的偏差來確定理論的正確與否。本文將利用卡方Chi特征檢驗(yàn)實(shí)現(xiàn)提取關(guān)鍵文本特征功能,感興趣的可以了解一下2022-12-12python數(shù)據(jù)結(jié)構(gòu)leetcode338比特位計數(shù)算法
這篇文章主要介紹了力扣刷題中python數(shù)據(jù)結(jié)構(gòu)leetcode338比特位計數(shù)算法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Postman安裝與使用詳細(xì)教程 附postman離線安裝包
這篇文章主要介紹了Postman安裝與使用詳細(xì)教程 附postman離線安裝包,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03