1. 程式人生 > 程式設計 >jupyter 使用Pillow包顯示影象時inline顯示方式

jupyter 使用Pillow包顯示影象時inline顯示方式

1.單獨使用Pillow包時,圖片會彈出新視窗顯示:

from Pillow import Image
img = Image.open('data/empire.jpg')
img.show()

2.我想要在jupyter notebook的瀏覽器上邊顯示圖片怎麼辦?

可以使用matplotlab.pyplot【顯示圖片工具】 和 Pillow【圖片處理工具】 結合使用

%matplotlib inline
import matplotlib.pyplot as plt 
from PIL import Image

img = Image.open('./img.png','r')

plt.imshow(img)
plt.axis('on') # 關掉座標軸為 off
plt.title('image') # 影象題目
plt.show()

例子如下:

jupyter 使用Pillow包顯示影象時inline顯示方式

3.pillow顯示灰色圖片+plt顯示多個圖片

%matplotlib inline
import matplotlib.pyplot as plt 
from PIL import Image

img = Image.open('./img.png','r')


gray = img.convert('L')
r,g,b = img.split()       #注意:gray和r,g,b不一樣,gray是三者通過公式算出來的
img_merged = Image.merge('RGB',(r,b))

#plt.figure(figsize=(10,5)) #設定視窗大小
plt.suptitle('Multi_Image') # 圖片名稱

plt.subplot(2,3,1),plt.title('imge:oringe')
plt.imshow(img),plt.axis('off')
plt.subplot(2,2),plt.title('gray:weicaise')
plt.imshow(gray),3),plt.title('gray:true')# 這裡必須加 cmap='gray',否則儘管原影象是灰度圖(下圖1),但是顯示的是偽彩色影象(下圖2)(如果不加的話)
plt.imshow(gray,cmap='gray'),4),plt.title('r')
plt.imshow(r,5),plt.title('g')
plt.imshow(g,6),plt.title('b')
plt.imshow(b,plt.axis('off')

plt.show()

jupyter 使用Pillow包顯示影象時inline顯示方式

補充知識:jupyter(ipython)內嵌問題:%pylab inline的使用

在使用jupyter(ipython新版本)的畫圖的過程中遇到了一個有關內嵌命令的問題,將其記錄如下:

1、案例描述

一個超級簡單的畫圖程式,因為jupyter是一個C/S分散式的python編輯環境,是一個基於客戶端web頁面的線上編輯器,你可以在瀏覽器中輸入伺服器的ip地址及jupyter的埠號(預設為8888),也可以自己的本機做伺服器(地址為http://localhost:8888)

未修改的程式碼如下:

%matplotlib inline
import numpy as np 
import matplotlib.pyplot as plt 

#以自然數序列作為多項式的係數,使用polyld函式建立多項式 
func = np.poly1d(np.array([1,2,4]).astype(float)) 
print func
#使用Numpy的linspace函式建立X軸的數值,在-10和10之間產生30個均勻分佈的值 
x=np.linspace(-10,10,30) 
#計算我們在第一步中建立的多項式的值 
y=func(x) 

plt.plot(x,y) 
plt.xlabel('x',fontsize=12) 
plt.ylabel('y(x)',fontsize=12) 
plt.show()

2、報錯:

jupyter 使用Pillow包顯示影象時inline顯示方式

錯誤提示:ImportError: libXext.so.6: cannot open shared object file: No such file or directory

一開始以為是沒有安裝PyQt4的錯(雖然我的確沒有安裝該模組)。

但是仔細看了下很長的錯誤提示後發現是pylab沒有內嵌進去。於是在開頭部分內嵌進去即可。修改後的程式碼如下:

3、解決方案

在程式碼的第一行加上%pylab inline

#在開頭新增pylab的內嵌語句,pylab是 Matplotlib 和Ipython提供的一個模組,提供了類似Matlab的語法。
%pylab inline
%matplotlib inline
import numpy as np 
import matplotlib.pyplot as plt 

#以自然數序列作為多項式的係數,使用polyld函式建立多項式 
func = np.poly1d(np.array([1,fontsize=12) 
plt.show()

加%pylab inline之後可正確執行出結果:

jupyter 使用Pillow包顯示影象時inline顯示方式

以上這篇jupyter 使用Pillow包顯示影象時inline顯示方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。