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 21 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
python数据结构之链表详解
Sep 12 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
python设定并获取socket超时时间的方法
Jan 12 Python
Python从函数参数类型引出元组实例分析
May 28 Python
Python 列表去重去除空字符的例子
Jul 20 Python
Python定时任务APScheduler的实例实例详解
Jul 22 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP中each与list用法分析
2016/01/08 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
Python与Redis的连接教程
2015/04/22 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
环境科学专业大学生自荐信格式
2013/09/21 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
2015年工程部工作总结
2015/04/30 职场文书
导游词之河北邯郸
2019/09/12 职场文书