python保存圖片的四個(gè)常用方法
前言
python中圖像處理相關(guān)庫(kù)有很多,這里簡(jiǎn)單介紹PIL、cv2、scipy.imageio 、matplotlib.image、skimage等常用庫(kù),其中PIL庫(kù)使用最方便,cv2庫(kù)功能最強(qiáng)大。下面分享保存圖片的常用方法
1.PIL的保存圖片方法
path = r"./001.jpg" #圖片路徑
img = Image.open(path) #打開圖片
img.save("1.jpg") #將圖片保存為1.jpg
2.opencv保存圖片
path = r"./001.jpg" #圖片路徑
#img = cv.imdecode(np.fromfile("動(dòng)漫人物_0.jpg",np.uint8))#含有中文路徑的圖片打開
img = cv2.imread(path) #讀取圖片
cv2.imwrite("1.jpg",img) #將圖片保存為1.jpg
3.Matplotlib保存圖片的方法
import matplotlib.pyplot as plt
import cv2
import os
images_path = "./minist_img"
for i,img_name in enumerate(os.listdir(images_path)):
img_path = os.path.join(images_path,img_name)
img = cv2.imread(img_path) #numpy的數(shù)組形式,色彩空間為BGR
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #
plt.subplot(2,2,i+1),plt.imshow(img)
plt.savefig("./minist.jpg")
plt.show()

4.pytorch保存圖片
save_image(real_img,os.path.join(save_img,f"{epoch}_real.jpg"),nrow=10,padding=2,pad_value=255)
參數(shù):
- tensor:4D張量,形狀為(B x C x H x W),分別表示樣本數(shù),通道數(shù),圖像高度,圖像寬度
- nrow:每行的圖片數(shù)量,默認(rèn)值為8
- padding:相鄰圖像之間的間隔。默認(rèn)值為2
- normalize:如果為True,則把圖像的像素值通過range指定的最大值和最小值歸一化到0-1。默認(rèn)為False
- range:元組,用于指定最大值和最小值。默認(rèn)使用圖像像素的最大最小值。
- sacle_each:如果為True,就單獨(dú)對(duì)每張圖像進(jìn)行normalize;如果是False,統(tǒng)一對(duì)所有圖像進(jìn)行normalize。默認(rèn)為Flase
- pad_value:float,上述padding會(huì)使得圖像之間留出空隙,默認(rèn)為0

matplotlib 擴(kuò)展:
1.圖像縮放、顯示
from scipy import misc
lena_new_sz = misc.imresize(img, 0.5) # 第二個(gè)參數(shù)如果是整數(shù),則為百分比,如果是tuple,則為輸出圖像的尺寸
plt.imshow(img_new_sz)
plt.axis('off')
plt.show()
2. 將np.array保存為圖像、直接保存np.array
# 2.1 np.array=>image file
from scipy import misc
misc.imsave('img_new_sz.png', img_new_sz)
"""
from scipy import misc
# load image
lena = misc.imread('lena.png')
# <type 'numpy.ndarray'>
type(lena)
# lena.shape, lena.dtype
"""
# 2.2 np.array=>np data file
import numpy as np
np.save('img_new_sz', img_new_sz) # 會(huì)在保存的名字后面自動(dòng)加上.npy
img = np.load('img_new_sz.npy') # 讀取前面保存的數(shù)組注意: np.array數(shù)據(jù)可以通過np.save函數(shù)直接保存在磁盤上,擴(kuò)展名為.npy, 通過np.load函數(shù)直接恢復(fù); scipy.misc提供了對(duì)numpy.array格式圖像的處理函數(shù),特別是misc.imsave函數(shù)可以直接將np.array數(shù)據(jù)保存成圖像文件。
總結(jié)
到此這篇關(guān)于python保存圖片的四個(gè)常用方法的文章就介紹到這了,更多相關(guān)python保存圖片方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytest實(shí)戰(zhàn)技巧之參數(shù)化基本用法和多種方式
本文介紹了pytest參數(shù)化的基本用法和多種方式,幫助讀者更好地使用這個(gè)功能,同時(shí),還介紹了一些高級(jí)技巧,如動(dòng)態(tài)生成參數(shù)名稱、參數(shù)化的組合和動(dòng)態(tài)生成參數(shù)化裝飾器,幫助讀者更靈活地使用參數(shù)化,感興趣的朋友參考下吧2023-12-12
Django 允許局域網(wǎng)中的機(jī)器訪問你的主機(jī)操作
這篇文章主要介紹了Django 允許局域網(wǎng)中的機(jī)器訪問你的主機(jī)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
python pygame模塊編寫飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python pygame模塊編寫飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Python socket實(shí)現(xiàn)多對(duì)多全雙工通信的方法
今天小編就為大家分享一篇Python socket實(shí)現(xiàn)多對(duì)多全雙工通信的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
python中對(duì)正則表達(dá)式re包的簡(jiǎn)單引用方式
這篇文章主要介紹了python中對(duì)正則表達(dá)式re包的簡(jiǎn)單引用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
python實(shí)現(xiàn)圖書借閱系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖書借閱系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
Python中unittest模塊做UT(單元測(cè)試)使用實(shí)例
這篇文章主要介紹了Python中unittest模塊做UT(單元測(cè)試)使用實(shí)例,本文直接給出待測(cè)試的類、測(cè)試類和測(cè)試結(jié)果以及測(cè)試總結(jié),需要的朋友可以參考下2015-06-06

