Python matplotlib繪制灰度和彩色直方圖

一、Matplotlib.Pyplot簡介

1、Matplotlib

Matplotlib 是 Python 的繪圖庫,它能讓使用者很輕松地將數據圖形化,並且提供多樣化的輸出格式。

Matplotlib 可以用來繪制各種靜態,動態,交互式的圖表。

Matplotlib 是一個非常強大的 Python 畫圖工具,我們可以使用該工具將很多數據通過圖表的形式更直觀的呈現出來。

Matplotlib 可以繪制線圖、散點圖、等高線圖、條形圖、柱狀圖、3D 圖形、甚至是圖形動畫等等。

2、Pyplot

Pyplot 是 Matplotlib 的子庫,提供瞭和 MATLAB 類似的繪圖 API。

Pyplot 是常用的繪圖模塊,能很方便讓用戶繪制 2D 圖表。

Pyplot 包含一系列繪圖函數的相關函數,每個函數會對當前的圖像進行一些修改,例如:給圖像加上標記,生新的圖像,在圖像中產生新的繪圖區域等等。

使用的時候,我們可以使用 import 導入 pyplot 庫,並設置一個別名 plt:

import matplotlib.pyplot as plt

然後我們就可以使用它來繪制圖形瞭

二、灰度直方圖

1、主要函數

主要用到兩個函數

(1) calcHist()

(2) hist()

具體用法我就不做過多介紹瞭,可以自行參考文檔,或者找一找網上大神們的解釋說明。

2、實現代碼

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

img = cv.imread('Photos/1.bmp')
cv.imshow('Img', img)

gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('GrayImg', gray_img)

# Gray Histogram
gray_hist = cv.calcHist([gray_img], [0], None, [256], [0,256], False)
# cv.calcHist(images, channels, mask, histSize, ranges, accumulate)

plt.figure(1)
plt.title('Gray Histogram Contour')
plt.xlabel('gray level')
plt.ylabel('number of pixels')
plt.plot(gray_hist)
plt.xlim([0,256])

plt.figure(2)
plt.title('Gray Histogram')
plt.xlabel('gray level')
plt.ylabel('number of pixels')
plt.hist(gray_img.ravel(),256)

plt.show()

cv.waitKey(0)

3、效果示例

三、彩色直方圖

跟灰度直方圖的原理差不多,需要對三種顏色進行一個簡單的遍歷,循環輸出圖形。

1、實現代碼

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

img = cv.imread('Photos/1.bmp')
cv.imshow('Img', img)

plt.figure()
plt.title('Color Histogram')
plt.xlabel('level')
plt.ylabel('number of pixels')
colors = ('b', 'g', 'r')
for i,item in enumerate(colors):
    hist = cv.calcHist([img], [i], None, [256], [0,256])
    plt.plot(hist, color=item)
    plt.xlim([0,256])

plt.show()

cv.waitKey(0)

2、效果示例

由此圖我們可以直觀地看出三種顏色不同閾值所出現的頻率的大小。 

到此這篇關於Python matplotlib繪制灰度和彩色直方圖的文章就介紹到這瞭,更多相關Python matplotlib繪制直方圖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: