python讀取和保存圖片
opencv
import cv2
#load
img = cv2.imread('0.png')
#show
cv.imshow('title', img)
#save
cv2.imwrite('1_cv2.png',img)
可以看到opencv讀取的圖片數(shù)據(jù)類型是uint8格式(屬于numpy),uint8是專門用于存儲(chǔ)各種圖像的(包括RGB,灰度圖像等),范圍是從0–255。
讀取的形狀為(H,W,C),BGR
matplotlib
import matplotlib.pyplot as plt
# load
img = plt.imread('0.png')
#讀取后的dtype為float32(屬于numpy),范圍是[0,1]
#讀取后的形狀是(H,W,C),RGB
# show
plt.imshow(img)
plt.axis('off')
plt.show()
# save
#plt.imsave('1_plt.png',img)
還有一個(gè)保存方式叫plt.savefig(),但是使用這種方式保存的時(shí)候,保存的圖片會(huì)顯示空白,參考了plt.savefig保存圖片一片空白或者顯示內(nèi)容不完整、錯(cuò)亂后把plt.savefig()放在了show的前面得以解決。
import matplotlib.pyplot as plt
# load
img = plt.imread('0.png')
#讀取后的shape為
# show
plt.imshow(img)
plt.axis('off')
plt.savefig('1_plt2.png')
plt.show()
PIL
from PIL import Image
# load
img = Image.open('0.png')
#讀取后形狀是(W,H)
# show
img.show()
#save
img.save('1_pil.png')
但是使用PIL讀取的圖片,matplotlib保存的圖片會(huì)顯示錯(cuò)誤。
原因是PIL讀取的圖片格式是PIL.JpegImagePlugin.JpegImageFile,形狀為(W,H)
要先把格式轉(zhuǎn)化為numpy,不管是plt還是cv2.imshow,在python中只認(rèn)numpy.array文章來源:http://www.zghlxwxcb.cn/news/detail-523659.html
總結(jié)
讀取圖片的方式有3種,分別是matplotlib讀取圖片、opencv讀取圖片和PIL讀取圖片。在讀取圖片后,可以統(tǒng)一使用matplotlib工具包顯示圖片。但是需要注意的是 opencv 讀取圖片的情況,讀取的圖片是BGR通道排序,需要轉(zhuǎn)為RGB通道。
另外注意,matplotlib使用時(shí),plt.imshow(image)如果沒有顯示圖片,在其后面加上plt.show()文章來源地址http://www.zghlxwxcb.cn/news/detail-523659.html
到了這里,關(guān)于python讀取和保存圖片的三種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!