Python读入mnist二进制图像文件并显示实例


Posted in Python onApril 24, 2020

图像文件是自己仿照mnist格式制作,每张图像大小为128*128

import struct
import matplotlib.pyplot as plt
import numpy as np

#读入整个训练数据集图像
filename = 'train-images-idx3-ubyte'
binfile = open(filename, 'rb')
buf = binfile.read()

#读取头四个32bit的interger
index = 0
magic, numImages, numRows, numColumns = struct.unpack_from('>IIII', buf, index)
index += struct.calcsize('>IIII')

#读取一个图片,16384=128*128
im = struct.unpack_from('>16384B', buf, index)
index += struct.calcsize('>16384B')

im=np.array(im)
im=im.reshape(128,128)

fig = plt.figure()
plotwindow = fig.add_subplot(111)
plt.imshow(im, cmap = 'gray')
plt.show()

补充知识:Python 图片转数组,二进制互转

前言

需要导入以下包,没有的通过pip安装

import matplotlib.pyplot as plt
import cv2
from PIL import Image
from io import BytesIO
import numpy as np

1.图片和数组互转

# 图片转numpy数组
img_path = "images/1.jpg"
img_data = cv2.imread(img_path)

# numpy数组转图片
img_data = np.linspace(0,255,100*100*3).reshape(100,100,-1).astype(np.uint8)
cv2.imwrite("img.jpg",img_data) # 在当前目录下会生成一张img.jpg的图片

2.图片和二进制格式互转

# 以 二进制方式 进行图片读取
with open("img.jpg","rb") as f:
 img_bin = f.read() # 内容读取

# 将 图片的二进制内容 转成 真实图片
with open("img.jpg","wb") as f:
 f.write(img_bin) # img_bin里面保存着 以二进制方式读取的图片内容,当前目录会生成一张img.jpg的图片

3.数组 和 图片二进制数据互转

"""
以上两种方式"合作"也可以实现,但是中间会有对外存的读写
一般这些到磁盘的IO操作还是很耗时间的
所以在内存直接处理会较好
"""

# 将数组转成 图片的二进制数据
img_data = np.linspace(0,255,100*100*3).reshape(100,100,-1).astype(np.uint8)
ret,buf = cv2.imencode(".jpg",img_data)
img_bin = Image.fromarray(np.uint8(buf)).tobytes()

# 将图片二进制数据 转为数组
img_data = plt.imread(BytesIO(img_bin),"jpg")
print(type(img_data))
print(img_data.shape)

"""
out:
<class 'numpy.ndarray'>
(100, 100, 3)
"""

或许还有别的方式也能实现 图片二进制数据 和 数组的转换,不足之处希望大家指出

以上这篇Python读入mnist二进制图像文件并显示实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python第三方库的安装方法总结
Jun 06 Python
Python中super()函数简介及用法分享
Jul 11 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
Python set常用操作函数集锦
Nov 15 Python
解决pycharm界面不能显示中文的问题
May 23 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
Python类super()及私有属性原理解析
Jun 15 Python
详解OpenCV曝光融合
Apr 29 Python
python实现坦克大战
Apr 24 #Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
Apr 24 #Python
python实现读取类别频数数据画水平条形图案例
Apr 24 #Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 #Python
Python内存映射文件读写方式
Apr 24 #Python
pandas的resample重采样的使用
Apr 24 #Python
python实现在内存中读写str和二进制数据代码
Apr 24 #Python
You might like
php中cookie的作用域
2008/03/27 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
php修改时间格式的代码
2011/05/29 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
Python实现程序的单一实例用法分析
2015/06/03 Python
python学习必备知识汇总
2017/09/08 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
python进行TCP端口扫描的实现
2018/12/21 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
jupyter实现重新加载模块
2020/04/16 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
如何写好升职自荐信
2014/01/06 职场文书
留守儿童工作方案
2014/06/02 职场文书
综治工作汇报材料
2014/10/27 职场文书
人民调解协议书
2016/03/21 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
vue+iview实现手机号分段输入框
2022/03/25 Vue.js