1. 程式人生 > >Python影象讀取

Python影象讀取

#影象讀取
<影象預處理Python的初學筆記>

  • 實現影象的縮放,灰度變換
  • 使用PIL和skimage

使用兩種方法對影象進行處理,開始的時候不知道應該用哪個庫對影象進行處理,所以先使用這兩種庫進行處理,實現一幅影象的讀取旋轉和縮放。


#一幅影象的預處理方法:
import numpy as np
import matplotlib.pyplot as plt

#方法一: 使用PIL庫
from PIL import Image
path = '/home/2092.jpg'  #影象所在的路徑
f = Image.open(path)
#open影象的路徑 img = f.convert('P') #對影象進行灰度變換 img1 = img.transpose(Image.FLIP_LEFT_RIGHT) #左右映象旋轉 img2 = img.transpose(Image.FLIP_TOP_BOTTOM) #影象上下映象旋轉 img = np.asarray(img, dtype=np.float32) #0-255灰度範圍 img[np.newaxis] img.shape #影象的大小 plt.imshow(img) #顯示影象 plt.show() #讀取的影象的灰度範為是0-255,影象顯示如下:

和真實的影象比較,發現PIL讀取的影象有很多瑕疵
這裡寫圖片描述對於顯示出來的影象和原來的影象不太一樣,所以,可以將影象的形式轉化為‘L’形式,即f.convert(‘L’).

#方法二:使用skimage庫
from skimage import io, transform, color
data_path = '/home/2092.jpg'
image = io.imread(data_path)  #讀取影象
image = color.rgb2gray(image)  #0-1灰度範圍
import matplotlib.pyplot as plt
plt.imshow(image)
plt.
show() image.shape

使用skimage顯示出的影象是0-1灰度範圍,顯示結果如下:
這裡寫圖片描述


#實現影象的縮放:
image1 = transform.resize(image, (256, 256))
plt.imshow(image1)
plt.show()

#實現影象的旋轉
image2 = transform.rotate(image1, 90)
plt.imshow(image2, 'gray')  #gray表示顯示的顏色
plt.show()

影象的大小縮放:
這裡寫圖片描述

影象的旋轉:
這裡寫圖片描述