python讀取和保存圖片5種方法對(duì)比
python讀取和保存圖片5種方法對(duì)比
python中對(duì)象之間的賦值是按引用傳遞的,如果需要拷貝對(duì)象,需要用到標(biāo)準(zhǔn)庫(kù)中的copy模塊
方法一:利用 PIL 中的 Image 函數(shù)
這個(gè)函數(shù)讀取出來(lái)不是 array 格式,這時(shí)候需要用 np.asarray(im) 或者 np.array()函數(shù) 。
區(qū)別:np.array() 是深拷貝,np.asarray() 是淺拷貝
copy.copy 淺拷貝 只拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象。
copy.deepcopy 深拷貝 拷貝對(duì)象及其子對(duì)象
例子:
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始對(duì)象
b = a #賦值,傳對(duì)象的引用
c = copy.copy(a) #對(duì)象拷貝,淺拷貝
d = copy.deepcopy(a) #對(duì)象拷貝,深拷貝
a.append(5) #修改對(duì)象a
a[4].append('c') #修改對(duì)象a中的['a', 'b']數(shù)組對(duì)象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
輸出結(jié)果:
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] c = [1, 2, 3, 4, ['a', 'b', 'c']] d = [1, 2, 3, 4, ['a', 'b']]
需要好好理解一下深拷貝和淺拷貝
from PIL import Image
import numpy as np
I = Image.open('./cc_1.png')
I.show()
I.save('./save.png')
I_array = np.array(I)
print I_array.shape
方法二:利用 matplotlib
利用 matplotlib.pyplot as plt 用于顯示圖片
matplotlib.image as mpimg 用于讀取圖片
并且讀取出來(lái)就是 array 格式
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
I = mpimg.imread('./cc_1.png')
print I.shape
plt.imshow(I)
方法三:利用 OpenCV-Python 接口
cv2.imread() 讀出來(lái)同樣是 array 形式,但是如果是單通道的圖,讀出來(lái)的是三通道的。
import cv2
I = cv2.imread('./cc_1.png')
print I.shape
方法四:圖像處理庫(kù) Scipy
圖像的存取筆者一般喜歡用 scipy 這個(gè)庫(kù)里的東西
讀出來(lái)是 array 形式,并且按照(H,W,C)形式保存
import matplotlib.pyplot as plt
from scipy import misc
import scipy
I = misc.imread('./cc_1.png')
scipy.misc.imsave('./save1.png', I)
plt.imshow(I)
plt.show()
方法五:用 skimage 庫(kù)
from skimage import io,data img=data.lena() io.imshow(img)
關(guān)于存儲(chǔ)方式主要用兩種:
當(dāng)對(duì)象是圖片時(shí),使用 object.save(path)函數(shù)
當(dāng)對(duì)象時(shí)二維數(shù)組時(shí),使用 misc.imsave(path,object)函數(shù)
python讀取圖片的5種方法使用非常簡(jiǎn)單,大家可以在自己機(jī)器上測(cè)試一下
相關(guān)文章
使用selenium+chromedriver+xpath爬取動(dòng)態(tài)加載信息
這篇文章主要介紹了使用selenium+chromedriver+xpath爬取動(dòng)態(tài)加載信息2022-02-02
python3使用urllib示例取googletranslate(谷歌翻譯)
這篇文章主要介紹了使用urllib取googletranslate(谷歌翻譯)的示例,通過(guò)這個(gè)谷歌翻譯示例學(xué)習(xí)python3中urllib的使用方法,2014-01-01
Python+Pygame實(shí)戰(zhàn)之詩(shī)詞填空游戲的實(shí)現(xiàn)
成語(yǔ)接龍大家都玩過(guò),但詩(shī)詞填空大家玩過(guò)嗎?把成語(yǔ)接龍變成填空題。難度可上漲了不止一個(gè)檔次呢!本文就來(lái)用Python和Pygame實(shí)現(xiàn)詩(shī)詞填空游戲,需要的可以參考一下2022-12-12
裝上這 14 個(gè)插件后,PyCharm 真的是無(wú)敵的存在
這篇文章主要介紹了裝上這 14 個(gè)插件后,PyCharm 真的是無(wú)敵的存在,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
如何處理json中不帶雙引號(hào)的key的問(wèn)題
這篇文章主要介紹了如何處理json中不帶雙引號(hào)的key的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
python 30行代碼實(shí)現(xiàn)螞蟻森林自動(dòng)偷能量
這篇文章主要介紹了python 30行代碼實(shí)現(xiàn)螞蟻森林自動(dòng)偷能量的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-02-02
pymssql ntext字段調(diào)用問(wèn)題解決方法
pymssql是python用來(lái)連接mssql數(shù)據(jù)庫(kù)的一個(gè)類(lèi)庫(kù)。該庫(kù)遵守Python DB API 2.0 標(biāo)準(zhǔn),并且還附帶了一個(gè)原生的低階數(shù)據(jù)訪問(wèn)模塊。2008-12-12
在Python中操作時(shí)間之tzset()方法的使用教程
這篇文章主要介紹了在Python中操作時(shí)間之tzset()方法的使用教程,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
python3 自動(dòng)打印出最新版本執(zhí)行的mysql2redis實(shí)例
這篇文章主要介紹了python3 自動(dòng)打印出最新版本執(zhí)行的mysql2redis實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04

