mnist数据集转换成图片和csv文档

2023-11-06

通常官网提供的mnist数据集都是压缩格式的文档,有时候我们在使用的时候需要将其:
(1)、解压成图片格式存入文件夹
(2)、或者保存成csv格式的文档

(1)保存成图片格式(windows下)

# -*- coding: utf-8 -*-
"""
Created on Tue Feb 18 17:36:14 2020
unzip_mnist

"""

import struct
from array import array
import numpy as np
import os
from PIL import Image
import cv2
trainimg = './fashion_mnist_origin/train-images.idx3-ubyte'
trainlabel = './fashion_mnist_origin/train-labels.idx1-ubyte'
testimg = './fashion_mnist_origin/t10k-images.idx3-ubyte'
testlabel = './fashion_mnist_origin/t10k-labels.idx1-ubyte'
trainfolder = './fashion_mnist_origin/train'
testfolder = './fashion_mnist_origin/test'
if not os.path.exists(trainfolder): os.makedirs(trainfolder)
if not os.path.exists(testfolder): os.makedirs(testfolder)
 
# open(文件路径,读写格式),用于打开一个文件,返回一个文件对象
# rb表示以二进制读模式打开文件
trimg = open(trainimg, 'rb')
teimg = open(testimg, 'rb')
trlab = open(trainlabel, 'rb')
telab = open(testlabel, 'rb')
# struct的用法这里不详述
struct.unpack(">IIII", trimg.read(16))
struct.unpack(">IIII", teimg.read(16))
struct.unpack(">II", trlab.read(8))
struct.unpack(">II", telab.read(8))
# array模块是Python中实现的一种高效的数组存储类型
# 所有数组成员都必须是同一种类型,在创建数组时就已经规定
# B表示无符号字节型,b表示有符号字节型
trimage = array("B", trimg.read())
teimage = array("B", teimg.read())
trlabel = array("b", trlab.read())
telabel = array("b", telab.read())
# close方法用于关闭一个已打开的文件,关闭后文件不能再进行读写操作
trimg.close()
teimg.close()
trlab.close()
telab.close()
# 为训练集和测试集各定义10个子文件夹,用于存放从0到9的所有数字,文件夹名分别为0-9
trainfolders = [os.path.join(trainfolder, str(i)) for i in range(10)]
testfolders = [os.path.join(testfolder, str(i)) for i in range(10)]
for dir in trainfolders:
    if not os.path.exists(dir):
        os.makedirs(dir)
for dir in testfolders:
    if not os.path.exists(dir):
        os.makedirs(dir)
# 开始保存训练图像数据
for (i, label) in enumerate(trlabel):
    filename = os.path.join(trainfolders[label], str(i) + ".png")
    print("writing " + filename)
    with open(filename, "wb") as img:
        #image = np.array([28,28])        
        data = [trimage[(i*28*28 + j*28) : (i*28*28 + (j+1)*28)] for j in range(28)]        
        data = np.array(data)
        #print("data:",data.shape)
        image = data
       # for r in range(28):
           #print("data:",np.array(data[r]))
           # for c in range(28):
           #image(r,:) = data1[:28]           
        #print(" image shape:",image)
        cv2.imwrite(filename, image)
        #image.write(img, data)
# 开始保存测试图像数据
for (i, label) in enumerate(telabel):
    filename = os.path.join(testfolders[label], str(i) + ".png")
    print("writing " + filename)
    with open(filename, "wb") as img:
        data = [teimage[(i*28*28 + j*28) : (i*28*28 + (j+1)*28)] for j in range(28)]
        image = np.array(data)
        cv2.imwrite(filename,image)

针对该作者的稍作修改:
https://blog.csdn.net/SongGu1996/article/details/98849274

(2)存成CSV格式的文档

def convert(imgf, labelf, outf, n):
    f = open(imgf, "rb")
    o = open(outf, "w")
    l = open(labelf, "rb")
 
    f.read(16)
    l.read(8)
    images = []
 
    for i in range(n):
        image = [ord(l.read(1))]
        for j in range(28*28):
            image.append(ord(f.read(1)))
        images.append(image)
 
    for image in images:
        o.write(",".join(str(pix) for pix in image)+"\n")
    f.close()
    o.close()
    l.close()
 
convert("mnist_origin/train-images.idx3-ubyte", "mnist_origin/train-labels.idx1-ubyte",
        "mnist_train.csv", 60000)

convert("mnist_origin/t10k-images.idx3-ubyte", "mnist_origin/t10k-labels.idx1-ubyte",
        "mnist_test.csv", 10000)
 
print("Convert Finished!")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mnist数据集转换成图片和csv文档 的相关文章

  • 深度学习训练之optimizer优化器(BGD、SGD、MBGD、SGDM、NAG、AdaGrad、AdaDelta、Adam)的最全系统详解

    文章目录 1 BGD 批量梯度下降 2 SGD 随机梯度下降 2 1 SGD导致的Zigzag现象 3 MBGD 小批量梯度下降 3 1 BGD SGD MBGD的比较 4 SGDM 5 NAG 6 AdaGrad Adaptive Gra
  • matlab中 hold on 与 hold off,figure作用

    hold on是当前轴及图像保持而不被刷新 准备接受此后将绘制的图形 多图共存 即启动图形保持功能 当前坐标轴和图形都将保持 从此绘制的图形都将添加在这个图形的基础上 并自动调整坐标轴的范围 hold off使当前轴及图像不再具备被刷新的性
  • matlab 读取某一文件夹下的文件

    MATLAB 是一个十分强大的科学计算软件 用于各种数据分析和科学计算 在实际工作和研究过程中 我们通常将数据存储在文件中 文件存在于系统的某个目录中 如果需要读取这些文件 可以使用 MATLAB 提供的文件和文件夹操作函数 本文将介绍如何
  • mingw qt5.14.2 编译 vtk9.1.0

    1 软件 qt版本 qt opensource windows x86 5 14 2 exe 安装mingw选项 cmake版本 cmake 3 21 2 windows x86 64 msi VTK源码版本 VTK 9 1 0 tar g
  • MATLAB实现五种边缘检测

    一 原理 常用的边缘检测算法有拉普拉斯边缘检测算法 Robert边缘检测算子 Sobel边缘检测算子 Prewitt边缘检测算子 Canny边缘检测算子 二 代码 filename pathname uigetfile jpg bmp gi
  • 【计算机视觉】最后显示的CIFAR-100数据集照片很模糊怎么解决?

    文章目录 一 前言 二 如何解决 2 1 使用图像增强技术 2 2 使用插值方法 2 3 使用更高分辨率的图像数据集 2 4 手动调整图像尺寸 三 总结 一 前言 如果从CIFAR 100数据集加载的图像显示模糊 可能有几个可能的原因 分辨
  • 第五章-数字水印-1-位平面

    数字水印概念 数字水印是一种将特定数字信息嵌入到数字作品中从而实现信息隐藏 版权认证 完整性认证 数字签名等功能的技术 以图片水印为例 水印嵌入过程 版权信息水印A嵌入到图像B中 得到含有水印的图像C 图像C与图像B在外观上基本一致 肉眼无
  • Halcon模板匹配

    Halcon模板匹配 Halcon模板匹配的方法 模板匹配的流程 基于形状的模板匹配的思路 原理 Halcon模板匹配的方法 模板匹配的流程 基于形状的模板匹配的思路 读取图像 转灰度图 dev close window dev open
  • (详细步骤和代码)利用A100 GPU加速Tensorflow

    利用A100 GPU加速Tensorflow NVIDIA A100 基于 NVIDIA Ampere GPU 架构 提供一系列令人兴奋的新功能 第三代张量核心 多实例 GPU MIG 和第三代 NVLink Ampere Tensor C
  • OpenCV入门【C++版】

    OpenCV基础入门 C 语言 Chapter1 读取图片 视频 摄像头 从文件读取图片 从文件读取视频 读摄像头 Chapter2 基础函数 Chapter3 调整和剪裁 Chapter4 绘制形状和文字 Chapter5 透视变换 Ch
  • 深度特征融合---高低层(多尺度)特征融合

    目录 概述 基本概念 典型方法概述 相关工作 多尺度模型设计 Deep Feature Fusion for VHR 高分辨率图像 Remote Sensing Scene Classification DCA特征融合方法 基于神经网络的目
  • 图像二值化

    文章目录 1 图像二值化 2 图像二值化方法及Python实现 2 1 简单二值法 2 2 平均值法 2 3 双峰法 2 4 OTSU法 3 opencv python中二值化方法的应用 3 1 简单阈值分割 Simple Threshol
  • PR-RL:Portrait Relighting via Deep Reinforcement Learning

    文章目录 Title PR RL Portrait Relighting via Deep Reinforcement Learning 1 Article 1 1 Abstract and Introduction 1 2 Conclus
  • 九宫格人车识别

    一 原理 通过霍夫检测圆的个数来识别小人位置 二 过程 1 二值图像 2 去掉宫格内容 便于分割 3 对二值图填补 减少纹理 4 分割九宫格 依次检测每个宫格中圆个数 5 最终显示小人所在宫格图片 在img6 jpg中 详细程序运行结果 三
  • cv2.minAreaRect()

    功能 求出在点集下的最小面积矩形 输入 格式 points array shape n 1 2 解释 其中points是点集 数据类型为ndarray array x1 y1 x2 y2 xn yn 输出 格式 rect tuple x y
  • 【图像压缩】QOI图像格式详解

    最近听说一种图像格式比较流行 想起我曾经是做图像压缩的emmmm 就来研究一下 QOI Quite OK Image Format 很好的图像格式 git链接 能快速地无损压缩图像 原理也非常简单 没有各种变换 直接空域处理 而无损压缩 自
  • Python的PIL库

    Python图像库PIL Python Image Library 是python的第三方图像处理库 图像类Image class Image类是PIL中的核心类 比如从文件中加载一张图像 处理其他形式的图像 或者是从头创造一张图像等 Im
  • 图像处理——我理解的傅里叶变换

    1 傅里叶变换的理解 傅里叶变换的相关数学公式目前还没有搞懂 先不整那个东西 我们主要是研究傅里叶变换的一些思想和应用 这个思想起源于牛顿研究那个三棱镜 白光透过棱镜之后会被分解为七种颜色的光 这些光叠加又能形成白光 所以说可以把一种事物分
  • ETC纹理压缩

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 图像分割-Grabcut法(C#)

    版权声明 本文为博主原创文章 转载请在显著位置标明本文出处以及作者网名 未经作者允许不得用于商业目的 本文的VB版本请访问 图像分割 Grabcut法 CSDN博客 GrabCut是一种基于图像分割的技术 它可以用于将图像中的前景和背景分离

随机推荐

  • C++ 中 enable_shared_from_this 的使用总结

    背景 enable shared from this 是 C 11 定义在头文件 include 中的一个模板类 其作用是在类的内部安全的得到 this 指针的 shared ptr 版本 获取 this 的 shared ptr 版本 概
  • 文件的blob、base64、File的转化

    前言 blob base64 File的互转 base64 File function toFile ndata ndata为base64格式地址 let arr ndata split mime arr 0 match 1 bstr at
  • DALL-E-2 论文水记

    DALL E 2 论文水记 模型示意图 虚线上面是 CLIP 的训练流程 虚线下面是文字生成图像的流程 我们有一个 prior 模型和一个 decode 模型 先把 text embeding 输入 prior 模型 得到 image em
  • How to run Android apps in tablet mode on your phone

    转自 http www littlegreenrobot co uk tutorials how to run android apps in tablet mode on your phone How to run Android app
  • 2.6内核的通用的编译步骤

    2 6内核的通用的编译步骤 1 下载源码并解压 虽然我们可以将内核源码存放在任何自己找得到的地方 但通常还是会将内核源码下载到 usr src目录并解压 cd usr src wget ftp kernel org pub linux ke
  • Android——AVD无法启动解决方法

    起因 最近安装了Android Studio开始瞎捣鼓 安装的时候配置的是自带的Android Virtual Device AVD 然后想在虚拟机上跑以下demo 发现虚拟机怎么都启动不了 起初我以为是系统找不到我的虚拟机的位置导致 因为
  • C# 说说lock

    一 MSDN的定义 lock 语句获取给定对象的互斥 lock 执行语句块 然后释放 lock 持有 lock 时 持有 lock 的线程可以再次获取并释放 lock 阻止任何其他线程获取 lock 并等待释放 lock lock 关键字可
  • 基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

    目录 前言 总体设计 系统整体结构图 系统流程图 孪生神经网络结构图 运行环境 Python 环境 TensorFlow 环境 模块实现 1 数据预处理 2 创建模型并编译 3 模型训练及保存 4 模型应用 系统测试 1 训练准确率 2 测
  • 软件测试管理方法(十一)——软件评审

    0 基本概念 工作 产品指软生命周期中各种产出物 包括各种文档 代码等 1 目的 从多方角度检查和评估每个阶段工作产品的合格情况 确保每个阶段的产出都是符合既定要求的 从而减少软件开发周期 包括项目周期 的返工现象 静态地测试程序中可能存在
  • LInux 锂电池驱动分析

    锂电池的驱动程序要实现以 下五个功能 1 可以自动检测到当前给电 池充电的是USB还 是AC 2 组织过大的充电电流 3 坏电池检测 4 死亡温度的检测 5 电池电压的测量 当我们要写一个锂 电池的驱动程序 的时候 首先 要知道内核提 供给
  • SpringBoot+Shiro实现免密登录

    1 自定义登录认证规则 import org apache shiro authc UsernamePasswordToken public class EasyUsernameToken extends UsernamePasswordT
  • DM6446的视频前端VPFE驱动之ioctl控制(视频缓存区,CCDC,decoder)解析之一

    本文均属自己阅读源码的点滴总结 转账请注明出处谢谢 欢迎和大家交流 qq 1037701636 email 200803090209 zjut com gzzaigcn2012 gmail com 在这里分析驱动的ioctl的内容时 需要结
  • Feature Pyramid Networks for Object Detection 论文笔记

    论文地址 Feature Pyramid Networks for Object Detection 前言 这篇论文主要使用特征金字塔网络来融合多层特征 改进了CNN特征提取 论文在Fast Faster R CNN上进行了实验 在COCO
  • 本地jar包上传的maven仓库,引用jar包中的pom依赖无法下载

    新项目开发公共组件 上传到公司maven仓库 记一次本地项目打包 上传到公司maven仓库的坑 mvn deploy deploy file DgroupId com test 分组 DartifactId test jar名称 Dvers
  • 【cuda】——cuda,opencv混合编程

    思路来自 https www cnblogs com dwdxdy p 3528711 html 但是其cuda源码是有问题的 没有cmakelists txt 背景 采用cuda gpu交换opencv图像的 r b通道 0 代码 mai
  • 恒生ufx接口转变成CTP接口

    由于当初自己的程序是对接ctp接口 里面大量使用了ctp的东西 但最近又要对接恒生的系统 想着不改整个程序 把ufx接口封装成ctp的接口形式 这样上层的业务逻辑都不用改了 已实现的主要功能 ReqUserLogin ReqOrderIns
  • C++的mutable

    一 介绍 mutable的中文意思是 可变的 易变的 正好与const相反 在C 中 mutable也是为了突破const的限制而设置的 被mutable修饰的变量 将永远处于可变的状态 即使在一个const函数中 二 用法 如果类的成员函
  • Nginx 动态负载均衡

    Nginx 负载均衡 动态实现 1 概览 1 传统配置实现的负载均衡 在加减服务器的时候 会遇到下面的问题 1 配置文件是默认地址 则需要重载配置文件 nginx s reload 加载配置文件流程 1 主进程通知worker进程进行重启
  • 一文了解什么是字节对齐(超详细)

    目录 1 什么是字节对齐 2 空类 3 带虚函数的类 32位机器 64位机器 1 什么是字节对齐 得分点 什么是内存对齐 内存对齐的原因 内存对齐的规则 标准回答 什么是内存对齐 现代计算机中内存空间都是按照 字节 byte 划分的 从理论
  • mnist数据集转换成图片和csv文档

    通常官网提供的mnist数据集都是压缩格式的文档 有时候我们在使用的时候需要将其 1 解压成图片格式存入文件夹 2 或者保存成csv格式的文档 1 保存成图片格式 windows下 coding utf 8 Created on Tue F