前言
今天簡單介紹如何通過 matplotlib 展示圖片,分為以下幾種情況:
- 直接用 matplotlib 讀取圖片,然後展示圖片;
- 採用 opencv 讀取圖片,然後用 matplotlib 來展示圖片;
- 採用 PIL 讀取圖片,然後用 matplotlib 來展示圖片。
首先是需要安裝需要的庫,主要是 opencv 、 matplotlib、Pillow 兩個庫:
<code>pip install opencv-python matplotlib Pillow/<code>
此外,在 jupyter 中運行代碼。
另外,本次代碼例子中展示所用的圖片為:
代碼和圖片都上傳到 GitHub 上了:
https://github.com/ccc013/CodesNotes/blob/master/PythonNotes/matplotlib_notes.ipynb
matplotlib 讀取並展示圖片
首先是導入需要的庫:
<code>import matplotlib.pyplot as plt import matplotlib.image as mpimg %matplotlib inline/<code>
第一行就是導入用於展示圖片的函數 matplotlib 的 pyplot ,第二行則是用於讀取圖片的 image ,第三行是因為在 jupyter 中用 matplotlit 展示圖片需要加入的一行代碼。
接下來就是讀取並展示圖片,如下所示:
<code># 採用 matplotlib 展示圖片 image = mpimg.imread('plane.jpg') plt.imshow(image)/<code>
結果如下所示:
這裡我們發現展示的圖片,出現了座標軸,可以通過添加一行代碼,來關閉座標軸:
<code>plt.axis('off')/<code>
結果如下所示:
展示通過 opencv 讀取的圖片
不過,對於圖像庫,使用更多的還是 opencv ,所以如何通過 matplotlib 展示 opencv 讀取的圖片呢?
代碼其實很簡單,如下所示:
<code>import cv2 image = cv2.imread("plane.jpg") plt.imshow(image)/<code>
但這裡發現展示的圖片顏色不對,和原圖出現了很大的區別,這是為什麼呢?
原因其實是 opencv 對於 RGB 圖片是將其表示為一個多維的 NumPy 的多維數組,但排列順序是反序的,也就是BGR 的順序,因此這裡需要對通道順序進行調整,代碼應該這麼修改:
<code>plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))/<code>
通過進行通道的轉換後,再次展示圖片,就能顯示原圖了。
展示通過 PIL 讀取的圖片
另外一個非常常用的圖像處理庫就是 PIL 了,這裡展示的代碼也很簡單,如下所示:
<code># 展示 PIL 讀取的圖片 from PIL import Image image = Image.open('plane.jpg') plt.imshow(image)/<code>
小結
今天簡單介紹瞭如何通過 matplotlib 來展示圖片,分別是三種情況,直接用 matplotlib 讀取圖片,用 opencv 讀取圖片,用 PIL 讀取圖片,其中需要注意的是 opencv 讀取圖片的情況,因為其對於 RGB 通道的排列是反序的。