91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

opencv中python如何統計及繪制直方圖

發布時間:2021-05-19 11:42:46 來源:億速云 閱讀:260 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關opencv中python如何統計及繪制直方圖的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

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

統計直方圖數據

首先要稍微理解一些與函數相關的術語,方便理解其在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()
這是處理的樣圖

opencv中python如何統計及繪制直方圖

下面是代碼實現

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('/home/yc/Pictures/cat.jpg',0)
plt.hist(img.ravel(),256,[0,256]);
plt.show()

效果

opencv中python如何統計及繪制直方圖

灰度直方圖

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

函數

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = 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()

效果如下

opencv中python如何統計及繪制直方圖

BGR直方圖

此外,再介紹一種很原始的計算灰度直方圖的方法……感覺代碼注釋的很完整,相信讀者也可以看懂

import sys
import numpy as np
import cv2
import matplotlib.pyplot as plt

def main():
  img=cv2.imread('/home/yc/Pictures/cat.jpg',0)
  #得到計算灰度直方圖的值
  xy=xygray(img)  

  #畫出灰度直方圖
  x_range=range(256)
  plt.plot(x_range,xy,"r",linewidth=2,c='black')
  #設置坐標軸的范圍
  y_maxValue=np.max(xy)
  plt.axis([0,255,0,y_maxValue])
  #設置坐標軸的標簽
  plt.xlabel('gray Level')
  plt.ylabel("number of pixels")
  plt.show()

def xygray(img):
  #得到高和寬
  rows,cols=img.shape
  #存儲灰度直方圖
  xy=np.zeros([256],np.uint64)
  for r in range(rows):
    for c in range(cols):
      xy[img[r][c]] += 1
  #返回一維ndarry
  return xy

main()

效果如下

opencv中python如何統計及繪制直方圖

灰度直方圖

感謝各位的閱讀!關于“opencv中python如何統計及繪制直方圖”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄢陵县| 历史| 南城县| 平潭县| 禄丰县| 鲜城| 岑巩县| 吴堡县| 彰化市| 秦安县| 洪湖市| 林甸县| 冀州市| 平昌县| 杭锦旗| 黄陵县| 林西县| 延吉市| 仪陇县| 平泉县| 济阳县| 石景山区| 安庆市| 焦作市| 定日县| 祁门县| 上饶市| 宁德市| 成都市| 漳平市| 张家港市| 三门县| 山东| 札达县| 株洲市| 新巴尔虎右旗| 洛川县| 新安县| 东平县| 盱眙县| 三台县|