Python影象讀取
阿新 • • 發佈:2019-01-04
#影象讀取
<影象預處理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()
影象的大小縮放:
影象的旋轉: