網站首頁 編程語言 正文
前言
python中圖像處理相關庫有很多,這里簡單介紹PIL、cv2、scipy.imageio 、matplotlib.image、skimage等常用庫,其中PIL庫使用最方便,cv2庫功能最強大。下面分享保存圖片的常用方法
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("動漫人物_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的數組形式,色彩空間為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)
參數:
- tensor:4D張量,形狀為(B x C x H x W),分別表示樣本數,通道數,圖像高度,圖像寬度
- nrow:每行的圖片數量,默認值為8
- padding:相鄰圖像之間的間隔。默認值為2
- normalize:如果為True,則把圖像的像素值通過range指定的最大值和最小值歸一化到0-1。默認為False
- range:元組,用于指定最大值和最小值。默認使用圖像像素的最大最小值。
- sacle_each:如果為True,就單獨對每張圖像進行normalize;如果是False,統一對所有圖像進行normalize。默認為Flase
- pad_value:float,上述padding會使得圖像之間留出空隙,默認為0
matplotlib 擴展:
1.圖像縮放、顯示
from scipy import misc lena_new_sz = misc.imresize(img, 0.5) # 第二個參數如果是整數,則為百分比,如果是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(lena) # lena.shape, lena.dtype """ # 2.2 np.array=>np data file import numpy as np np.save('img_new_sz', img_new_sz) # 會在保存的名字后面自動加上.npy img = np.load('img_new_sz.npy') # 讀取前面保存的數組
注意: np.array數據可以通過np.save函數直接保存在磁盤上,擴展名為.npy, 通過np.load函數直接恢復; scipy.misc提供了對numpy.array格式圖像的處理函數,特別是misc.imsave函數可以直接將np.array數據保存成圖像文件。
總結?
原文鏈接:https://blog.csdn.net/weixin_47873308/article/details/113627733
相關推薦
- 2022-04-12 jieba.posseg.cut分詞結果與jieba.cut不一致
- 2022-04-22 如何讓electron收到消息發出聲音
- 2023-10-10 前端的多種克隆方式和注意事項
- 2022-04-05 本地文件提交到gitee上報錯的問題:error: src refspec master does
- 2022-09-02 Golang基礎教程之字符串string實例詳解_Golang
- 2022-05-06 教你使用zabbix?api批量添加數百臺監控主機的方法_zabbix
- 2022-03-10 Android如何獲取APP啟動時間_Android
- 2022-01-22 C 語言中一些重要關鍵字
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支