python matplotlib.pyplot對圖像進行繪制


imshow()是對圖像進行繪制

imshow()函數格式為:

  matplotlib.pyplot.imshow(X, cmap=None)

  X: 要繪制的圖像或數組。

  cmap: 顏色圖譜(colormap), 默認繪制為RGB(A)顏色空間。

實例:

import matplotlib.pyplot as plt
plt.imshow(img)

這一行代碼的實質是利用matplotlib包對圖片進行繪制,繪制成功后,返回一個matplotlib類型的數據。在窗口上繪制完圖片后,返回一個AxesImage對象。要在窗口上顯示這個對象,我們可以調用show()函數來進行顯示。在ipython中繪制完后不用show函數也能自動把圖畫出來,網上很多教程都是在ipython中進行的,所以都沒提到要用show函數。

from skimage import io,data
img=data.astronaut()
dst=io.imshow(img)
print(type(dst))
io.show()

顯示為:

可以看到,類型是'matplotlib.image.AxesImage'。顯示一張圖片,我們通常更願意這樣寫:

import matplotlib.pyplot as plt
from skimage import io,data
img=data.astronaut()
plt.imshow(img)
plt.show()

matplotlib是一個專業繪圖的庫,相當於matlab中的plot,可以設置多個figure窗口,設置figure的標題,隱藏坐標尺,甚至可以使用subplot在一個figure中顯示多張圖片。一般我們可以這樣導入matplotlib庫:

import matplotlib.pyplot as plt

也就是說,我們繪圖實際上用的是matplotlib包的pyplot模塊。

一、用figure函數和subplot函數分別創建主窗口與子圖

例:分開並同時顯示宇航員圖片的三個通道

from skimage import data
import matplotlib.pyplot as plt
img=data.astronaut()
plt.figure(num='astronaut',figsize=(8,8))  #創建一個名為astronaut的窗口,並設置大小 

plt.subplot(2,2,1)     #將窗口分為兩行兩列四個子圖,則可顯示四幅圖片
plt.title('origin image')   #第一幅圖片標題
plt.imshow(img)      #繪制第一幅圖片

plt.subplot(2,2,2)     #第二個子圖
plt.title('R channel')   #第二幅圖片標題
plt.imshow(img[:,:,0],plt.cm.gray)      #繪制第二幅圖片,且為灰度圖
plt.axis('off')     #不顯示坐標尺寸

plt.subplot(2,2,3)     #第三個子圖
plt.title('G channel')   #第三幅圖片標題
plt.imshow(img[:,:,1],plt.cm.gray)      #繪制第三幅圖片,且為灰度圖
plt.axis('off')     #不顯示坐標尺寸

plt.subplot(2,2,4)     #第四個子圖
plt.title('B channel')   #第四幅圖片標題
plt.imshow(img[:,:,2],plt.cm.gray)      #繪制第四幅圖片,且為灰度圖
plt.axis('off')     #不顯示坐標尺寸

plt.show()   #顯示窗口

在圖片繪制過程中,我們用matplotlib.pyplot模塊下的figure()函數來創建顯示窗口,該函數的格式為:

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None)

所有參數都是可選的,都有默認值,因此調用該函數時可以不帶任何參數,其中:

num: 整型或字符型都可以。如果設置為整型,則該整型數字表示窗口的序號。如果設置為字符型,則該字符串表示窗口的名稱。用該參數來命名窗口,如果兩個窗口序號或名相同,則后一個窗口會覆蓋前一個窗口。

figsize: 設置窗口大小。是一個tuple型的整數,如figsize=(8,8)

dpi: 整形數字,表示窗口的分辨率。

facecolor: 窗口的背景顏色。

edgecolor: 窗口的邊框顏色。

用figure()函數創建的窗口,只能顯示一幅圖片,如果想要顯示多幅圖片,則需要將這個窗口再划分為幾個子圖,在每個子圖中顯示不同的圖片。我們可以使用subplot()函數來划分子圖,函數格式為:

matplotlib.pyplot.subplot(nrowsncolsplot_number)

nrows: 子圖的行數。

ncols: 子圖的列數。

plot_number: 當前子圖的編號。

如:

plt.subplot(2,2,1)

則表示將figure窗口划分成了2行2列共4個子圖,當前為第1個子圖。我們有時也可以用這種寫法:

plt.subplot(221)

兩種寫法效果是一樣的。每個子圖的標題可用title()函數來設置,是否使用坐標尺可用axis()函數來設置,如:

plt.subplot(221)
plt.title("first subwindow")
plt.axis('off') 

 

 

 

http://blog.csdn.net/haoji007/article/details/52063168


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM