在Python中如何保存图像

在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)#保存图像

在Python中如何保存图像_第1张图片

函数为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 Image

im = 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)

你可能感兴趣的:(tensorflow,python,Python3,保存图像,数组,tensorflow,mnist)