国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

opencv python統計及繪制直方圖的方法

2020-02-16 00:46:55
字體:
來源:轉載
供稿:網友

灰度直方圖概括了圖像的灰度級信息,簡單的來說就是每個灰度級圖像中的像素個數以及占有率,創建直方圖無外乎兩個步驟,統計直方圖數據,再用繪圖庫繪制直方圖。

統計直方圖數據

首先要稍微理解一些與函數相關的術語,方便理解其在python3庫中的應用和處理

BINS: 在上面的直方圖當中,如果像素值是0到255,則需要256個值來顯示直 方圖。但是,如果不需要知道每個像素值的像素數目,只想知道兩個像素值之間的像素點數目怎么辦?例如,想知道像素值在0到15之間的像素點數目,然后是16到31。。。240到255。可以將256個值分成16份,每份計算綜合。每個分成的小組就是一個BIN(箱)。在opencv中使用histSize表示BINS。

DIMS: 數據的參數數目。當前例子當中,對收集到的數據只考慮灰度值,所以該值為1。

RANGE: 灰度值范圍,通常是[0,256],也就是灰度所有的取值范圍。

統計直方圖同樣有兩種方法,使用opencv統計直方圖,函數如下:

cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])

該函數的參數在了解以上術語加上自己百度后可以簡單應用

使用numpy統計函數,主要應用 numpy.histogram() 函數(還有 np.bincount() ,還未嘗試,讀者可以自己嘗試,大抵使用方法相同)

hist,bins = np.histogram(img.ravel(),256,[0,256])

opencv處理速度優于numpy,同時對于學習opencv的同學來說,多運用cv的處理方法無疑更利于學習。

繪制直方圖

繪制直方圖一般使用Matplotlib繪制 ,這里要提一下matplotlib的 matplotlib.pyplot.hist() 函數,該函數可以直接統計繪制中方圖。統計函數為 calcHist()np.histogram()
這是處理的樣圖

下面是代碼實現

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('/home/yc/Pictures/cat.jpg',0)plt.hist(img.ravel(),256,[0,256]);plt.show()

效果

灰度直方圖

當然,在顏色圖像檢索之類用法時,我們需要的是BGR直方圖,原理類似,統計時使用 cv2.calcHist()

函數

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('/home/yc/Pictures/cat.jpg',1)color = ('b','g','r')for i,col in enumerate(color):  histr = cv2.calcHist([img],[i],None,[256],[0,256])  plt.plot(histr,color = col)  plt.xlim([0,256])plt.show()

效果如下

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 井研县| 贺兰县| 运城市| 铜鼓县| 宁海县| 农安县| 北安市| 边坝县| 满城县| 呼和浩特市| 成都市| 辽宁省| 宜春市| 高州市| 舟曲县| 榆中县| 方正县| 闵行区| 潮安县| 边坝县| 株洲县| 阜宁县| 张家口市| 金寨县| 桐庐县| 陆川县| 民乐县| 进贤县| 观塘区| 周宁县| 漳浦县| 普定县| 南投县| 襄汾县| 象山县| 锡林郭勒盟| 文登市| 洪洞县| 大连市| 睢宁县| 乌兰浩特市|