在Python中如何保存图像

article/2025/8/27 9:57:36

在Python中如何保存图像,如何将数组保存为图像

主要是看了TensorFlow中第一部分中看到的,查了查资料总结下如何将数组保存为图像
原程序如下

import scipy.misc
import os
#from PIL import Image
#把原始图片保存至MNIST_data/raw/下
save_dir="MNIST_data/raw/"
if os.path.exists(save_dir)is False:os.makedirs(save_dir)for i in range(20):image_array=mnist.train.images[i,:]#打印第i个image_array=image_array.reshape(28,28)filename=save_dir + 'mnist_train_%d.jpeg' % i#保存文件的格式print(filename)print(mnist.train.labels[i,:])#打印出标签scipy.misc.toimage(image_array,cmin=0.0,cmax=1.0).save(filename)#保存图像

程序运行结果如下:

 MNIST_data/raw/mnist_train_0.jpeg
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
MNIST_data/raw/mnist_train_1.jpeg
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_2.jpeg
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_3.jpeg
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
MNIST_data/raw/mnist_train_4.jpeg
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_5.jpeg
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
MNIST_data/raw/mnist_train_6.jpeg
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_7.jpeg
[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_8.jpeg
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
MNIST_data/raw/mnist_train_9.jpeg
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
MNIST_data/raw/mnist_train_10.jpeg
[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_11.jpeg
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_12.jpeg
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_13.jpeg
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_14.jpeg
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
MNIST_data/raw/mnist_train_15.jpeg
[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_16.jpeg
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
MNIST_data/raw/mnist_train_17.jpeg
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
MNIST_data/raw/mnist_train_18.jpeg
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
MNIST_data/raw/mnist_train_19.jpeg
[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
C:/Users/Administrator.SKY-20180518VHY/Desktop/pytorch code/pytorch/201811.07_tensorflow.py:63: DeprecationWarning: `toimage` is deprecated!
`toimage` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.
Use Pillow's ``Image.fromarray`` directly instead.

可以看到最下面写的在scipy1.2.0版本中将会被Image.fromarray取代原函数将删除,所以在此总结了下如保存图像的问题,主要针对如何将数组保存为图像,方法一:利用scripy库进行读取

for i in range(20):image_array=mnist.train.images[i,:]#打印第i个image_array=image_array.reshape(28,28)filename=save_dir + 'mnist_train_%d.jpg' % i#保存文件的格式print(filename)print(mnist.train.labels[i,:])#打印出标签scipy.misc.toimage(image_array,cmin=0.0,cmax=1.0).save(filename)#保存图像

在这里插入图片描述

函数为scipy.misc.toimage(ARR,高=255,低= 0,Cmin =无,Cmax为无,PAL =无,模式=无,channel_axis =无)
scipy.misc.toimage(image_array, cmin=0.0, cmax=…).save(‘outfile.jpg’)

方法2利用PIL读取

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('1.jpg')
print (img.size)  #图片的尺寸
print (img.mode)  #图片的模式
print (img.format) #图片的格式
img.save('2.png')

对于此处mnist数据的读取有

import os
from PIL import Image
#把原始图片保存至MNIST_data/raw/下
save_dir="MNIST_data/raw/"
if os.path.exists(save_dir)is False:os.makedirs(save_dir)
for i in range(20):image_array=mnist.train.images[i,:]#打印第i个image_array=image_array.reshape(28,28)filename=save_dir + 'mnist_train_%d.jpg' % i#保存文件的格式print(filename)print(mnist.train.labels[i,:])#打印出标签a=Image.fromarray(image_array)a=a.convert('RGB')#将其转换为RGB形式,或转化为灰度形式a.save(filename)

问题:python的PIL打开图片之后报错OSError: cannot write mode P as JPEG
解决:图片模式不对,需要转换

方法

from PIL import Imageim = Image.open('a.jpg')
im = im.convert('RGB')#im=im.convert('L')
im.save('b.jpg')

第三种方法:

from PIL import Image
import matplotlib
img=Image.open('1.jpg')
gray=img.convert('L')
matplotlib.image.imsave('name.png', gray)

http://chatgpt.dhexx.cn/article/6lwUktri.shtml

相关文章

Python获取图片保存对应的文件夹

首先创建的文件夹,先定义一个创建文件夹的函数: def makdir(path):try:isExists os.path.exists(path)#判断是否存在文件夹if not isExists:#不存在创建os.makedirs(path)print(path文件夹创建成功!)else:print(path文件夹已存在&#xff0…

【python学习】如何将所绘制的图(单张多张)保存到文件夹,并用绘制实时时间命名图片

python图片保存到文件夹 基本存储(plt.savefig())创建文件夹并存储图片(if结构OS模块)批量绘制图片批量存储(for循环)图片/文件夹命名与所运行时间关联(datatime模块) 最近一直在做…

python读取图片、保存图片的方法

转自:https://jingyan.baidu.com/article/1876c852572d2f890b137609.html 分步阅读 本文介绍一下,python读取图片、保存图片的方法。 工具/原料 电脑 python3.6(anaconda) matplotlib模块 opencv模块 pillow模块 photomos…

python读取和保存图片的三种方法

python读取和保存图片 opencv import cv2 #load img cv2.imread(0.png) #show cv.imshow(title, img) #save cv2.imwrite(1_cv2.png,img)可以看到opencv读取的图片数据类型是uint8格式(属于numpy),uint8是专门用于存储各种图像的&#xff…

python读取与保存图片的exif信息

图片的exif文件格式中保存了很多信息,比如GPS经纬度,高度,焦距等信息。 在图片的属性中可以看到这些信息: 我们可以使用python来进行exif数据的读取和保存。 1. 首先安装piexif pip3 install piexif 2.exif数据读取代码 impo…

Python 保存图片的两种方法

有时我们需要保存我们的图片,那我们可以怎么保存呢? 可参考下列保存的两种方法: 第一种:cv2.imwrite() 示例: # 方法一 : import cv2 cv2.imwrite("imwrite_pic.jpg", cv2.imread(pic.jpg)) 第二种:i…

python图片存取四种常用方法记录

一、PIL(Python Imaging Library)#python图像处理库 from PIL import Image import numpy as np #数值计算扩展包I Image.open("1.jpg") #读入图片 I.show() #显示图片 print(I) …

python保存图片的常用方法

保存图片的常用方法 1.PIL的保存图片方法 path r"./001.jpg" #图片路径 img Image.open(path) #打开图片 img.save("1.jpg") #将图片保存为1.jpg2.opencv保存图片 path r"./001.jpg" #图片路径 #img cv.imdecode(np.fromfi…

本地及服务器如何清除redis缓存

1、本地环境清除redis缓存 我用的redis管理工具是RedisDesktopManager,安装可参考https://blog.csdn.net/lihua5419/article/details/80661826 清除缓存命令为flushall,如下图所示: 2、服务器上清除redis缓存 我们服务器用的是Linux系统&a…

Redis 缓存删除策略

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis是一个key-value存储系统。和Memcached类似&#xf…

Linux下redis清理缓存

1、先确保redis进程存在: 2、进入redsi下面的bin目录; 3、执行:执行./redis-cli登陆; 4、查看当前数据库key的数量,执行:dbsize命令 (如果出现(error) ERR unknown command ‘(error)’ &#x…

利用Redis进行数据缓存

1. 引言 缓存有啥用? 降低对数据库的请求,减轻服务器压力提高了读写效率 缓存有啥缺点? 如何保证数据库与缓存的数据一致性问题?维护缓存代码搭建缓存一般是以集群的形式进行搭建,需要运维的成本 2. 将信息添加到…

Linux下如何清空Redis缓存

1.首先进到redis的安装目录,进到src目录下,找到redis-cli 2.首先用账号密码的方式进入到redis的服务端 ./redis-cli -h 127.0.0.1 -p 6379 进去后会出现下面的界面ip:port> 然后,输入密码进行鉴权>auth "yourpassword"&a…

redis如何清空指定缓存和所有缓存

Windows环境下使用命令行进行redis缓存清理 1.访问redis根目录 cd D:\development_tools\redis64-3.0.501 2.登录redis:redis-cli -h 127.0.0.1 -p 6379 3.查看所有key值:keys * 4.删除指定索引的值:del key 5.清空整个 Redis 服务器的数据&…

redis删除缓存

首先下载一个redis可视化管理页面:RedisDesktopManager, 1、点击连接到redis服务器 2、 填写连接Ip地址,端口(默认6379),有密码填写密码,没用密码就不用填写了,然后点击测试连接,连接成功后,可以找到自己…

如何清理Redis中的缓存

首先在cmd模式下进入redis的目录, 然后使用 redis-cli -p 6379(指定进入的端口号,本人的端口号为6379) 进入该端口的redis数据库之后有以下两种清空缓存的命令 1.清空当前redis数据库缓存flushdb flushdb 2.清空整个redis缓存flushall flushall

redis如何清空缓存

前言: 如果你们的项目用到redis啦,虽然设置了过期时间,但有时候修改bug,仍然需要及时清空缓存,去读数据库的数据,所以这篇文章讲解如何在linux下清除redis的缓存。 正文: 1.首先进到redis的安…

redis如何清空当前缓存和所有缓存

Windows环境下使用命令行进行redis缓存清理 1、redis安装目录下输入cmd 2、redis-cli -p 端口号 3、flushdb 清除当前数据库缓存 4、flushall 清除整个redis所有缓存 客户端直接 右键即可:

redis 清理缓存

----windos 方法1,重启redis也能请缓存。 方法2,清缓存前确保redis-server.exe进程已经启动,然后打开redis-cli.exe,跳出的CMD里面输入flushall,显示OK就可以了。 flushall:清空整个redis 服务器的数据(删除…

redis清理缓存

redis如何清空缓存 如果你们的项目用到redis啦,虽然设置了过期时间,但有时候修改bug,仍然需要及时清空缓存,去读数据库的数据,所以这篇文章讲解如何清除redis的缓存。 正文 1.首先进到redis的安装目录,进…