壹. matplotlib
1.顯示圖片
復制代碼
import mapplotlib . py plot asplt # PLT用於顯示圖片。
將mapplotlib.image導入為mpimg # mpimg用於讀取圖片。
將numpy作為np導入
Lena = mpimg.imread('lena.png') #讀取代碼所在目錄下的lena.png。
# lena已經是np.array了,妳可以隨意處理。
lena.shape #(512,512,3)
Plt.imshow(lena) #顯示圖片
Plt.axis('off') #不顯示坐標軸。
plt.show()
復制代碼
2.顯示頻道
復制代碼
#顯示圖片的第壹個頻道
lena_1 = lena
plt.imshow('lena_1 ')
plt.show()
#這時候妳會發現顯示的是熱圖,而不是我們預期的灰度圖。您可以添加cmap參數,有幾種方法可以添加它們:
plt.imshow('lena_1 ',cmap='Greys_r ')
plt.show()
img = plt.imshow('lena_1 ')
Img.set_cmap('gray') # 'hot '是熱點圖。
plt.show()
復制代碼
3.將RGB轉換為灰度圖像
matplotlib中沒有合適的函數將RGB圖像轉換成灰度圖像。您可以根據公式定制壹個:
復制代碼
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
gray = rgb2gray(lena)
#也可以使用PLT.im show (Gray,cmap = PLT.get _ cmap ('Gray '))。
plt.imshow(gray,cmap='Greys_r ')
plt.axis(“關”)
plt.show()
復制代碼
4.縮放圖像。
這裏用Scipy
復制代碼
從scipy導入雜項
Lena _ new _ SZ = misc.imresize (Lena,0.5) #第二個參數如果是整數就是百分比,如果是元組就是輸出圖像的大小。
plt.imshow(lena_new_sz)
plt.axis(“關”)
plt.show()
復制代碼
保存圖片
5.1保存matplotlib繪制的圖像。
該方法適用於保存任何由matplotlib繪制的圖像,相當於壹個截屏。
plt.imshow(lena_new_sz)
plt.axis(“關”)
' lena_new_sz.png ')
5.2將數組另存為圖像
從scipy導入雜項
misc.imsave('lena_new_sz.png ',lena_new_sz)
5.3直接保存數組
讀取後,您仍然可以按照之前顯示數組的方法顯示圖像,這不會對圖像質量造成任何損失。
Np.save ('Lena _ new _ SZ ',Lena _ new _ SZ) #會自動添加。保存名稱後的npy。
img = NP . load(' Lena _ new _ SZ . npy ')#讀取之前保存的數組。
第二,PIL
1.顯示圖片
從PIL進口圖片
im = Image.open('lena.png ')
im.show()
2.將PIL圖像圖片轉換為numpy數組。
im_array = np.array(im)
# np.asarray(im)也可以。不同的是np.asarray()是深度拷貝,np。asarray()是壹個淺層副本。
保存PIL的照片
直接調用Image類的save方法。
從PIL進口圖片
I = Image.open('lena.png ')
I.save('new_lena.png ')
4.將numpy數組轉換成PIL圖片。
這裏,matplotlib.image用於讀取圖像數組。註意這裏讀取的數組是float32類型的,範圍是0-1,而PIL的數據。圖像為uinit8類型,範圍為0-255,因此需要轉換:
將matplotlib.image作為mpimg導入
從PIL進口圖片
Lena = mpimg.imread('lena.png') #這裏讀取的數據為float32類型,取值範圍為0-1。
im = image . from array(NP . ui nit 8(Lena * 255))
im.show()
5.將RGB轉換為灰度圖像
從PIL進口圖片
I = Image.open('lena.png ')
壹.展示()
L = I.convert('L ')
L.show()