Python中讀取、顯示和保存圖片的方法


方法一:利用 PIL 中的 Image 函數

這個函數讀取出來不是 array 格式,這時候需要用 np.asarray(im) 或者 np.array(im)函數將其處理成array格式。
區別:np.array() 是深拷貝,np.asarray() 是淺拷貝。淺拷貝只拷貝父對象,不會拷貝對象的內部的子對象;深拷貝會拷貝對象及其子對象。

 1 from PIL import Image
 2 import numpy as np
 3 
 4 #讀取
 5 image = Image.open('fur.jpg')
 6 #顯示
 7 image.show()
 8 #保存
 9 image.save('new.jpg')
10 #轉換成array
11 im_array = np.array(image)
12 print(im_array.shape)
13 #array轉換成image
14 img = Image.fromarray(np.uint8(im_array))
15 img.save('new1.jpg') #還可以指定圖片質量img.save('new1.jpg',quality=95),默認值為75

方法二:利用 matplotlib

利用 matplotlib.pyplot as plt 用於顯示圖片;利用matplotlib.image as mpimg 用於讀取圖片,並且讀取出來就是 array 格式。

 1 import matplotlib.pyplot as plt
 2 import matplotlib.image as mpimg
 3 import numpy as np
 4 
 5 img = mpimg.imread('fur.jpg')
 6 print(img.shape)
 7 plt.imshow(img) #該函數負責對圖像進行處理,並顯示其格式,但不能顯示,其后跟着plt.show()才能顯示出來
 8 plt.axis('off') #不顯示坐標軸
 9 plt.show()
10 plt.savefig('new.jpg')

方法三:利用 OpenCV-Python 接口

cv2.imread() 讀出來同樣是 array 形式,但是如果是單通道的圖,讀出來的是三通道的。

1 import cv2
2 
3 img = cv2.imread('fur.jpg')
4 h,w,c = img.shape
5 cv2.imshow('window_title', img)
6 cv2.waitKey(5000) #里面的參數表示延遲多少毫秒,默認為0.當參數小於等於0時,可以理解為延遲無窮大毫秒,就是暫停了。不使用該函數的話會發現圖片一閃而過,觀察不到。
7 cv2.imwrite('new2.jpg',img)

方法四:圖像處理庫 Scipy

讀出來是 array 形式,並且按照(H,W,C)形式保存

1 import scipy.misc
2 import matplotlib.pyplot as plt
3 
4 img = scipy.misc.imread('fur.jpg')
5 scipy.misc.imsave('new3.jpg',img)
6 plt.imshow(img)
7 plt.show()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM