二维矩阵保存为灰度图像

因为初学tensorflow,最先接触的肯定是MNIST手写数据集。但数据集的格式并不一致,有的是npz格式,有些直接保存为图片格式。这篇文章的目的主要是将npz文件生成对应的图片格式,并且保存在对应的文件夹下。共有四个文件,其中(60000, 28, 28)为训练数据集的大小,(60000,)为训练标签集的大小。
在这里插入图片描述

首先尝试了tensorflow方法,其中img_after_decoder为正常图片解码之后成为的矩阵。但由于MNIST数据集的图片都为灰度图片,只是28×28的二维图片,而tf.gfile.GFile方法要求的是彩色三维图像。所以需要改变方法

    # 图像编码
    encode_image = tf.image.encode_jpeg(img_after_decoder)
    # 保存文本到本地文件
    with tf.gfile.GFile("seaha.jpg", 'wb') as f:
        f.write(encode_image.eval())

一幅灰度图像就是一个数据矩阵,矩阵的值表示灰度的浓淡。其每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;但是,灰度图像在黑色与白色之间还有许多级的颜色深度。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的,用于显示的灰度图像通常用每个采样像素8位(uint8)的非线性尺度来保存,这样可以有256级灰度(如果用16(uint16)位,则有65536级)
原文链接:https://blog.csdn.net/luoshiyong123/article/details/87546900

然后尝试了scipy.misc.imsave方法,但是报错AttributeError: module 'scipy.misc' has no attribute 'imsave'
所以最终采用的是imageio.imsave方法,实际代码如下:

import numpy as np
import imageio
import os
cat_data = np.load('mnist.npz')
print(cat_data.files)
x_train=cat_data["x_train"]
y_train=cat_data["y_train"]
x_test=cat_data["x_test"]
y_test=cat_data["y_test"]
for i in range(0,100):
    if os.path.isdir('D://MNIST/%s' %str(y_test[i])):  ##不用加引号,如果是多级目录,只判断最后一级目录是否存在
        print('dir exists')
        imageio.imsave('D://MNIST/%s/%s.jpg' % (str(y_test[i]), str(i)), x_test[i,])
        pass
    else:
        print('dir not exists')
        os.mkdir('D://MNIST/%s' %str(y_test[i]))
        print('D://MNIST/%s/%s.jpg' %(str(y_test[i]),str(i)))
        imageio.imsave('D://MNIST/%s/%s.jpg' %(str(y_test[i]),str(i)), x_test[i,])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值