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中的JSON使用
Apr 28 Python
对Python中type打开文件的方式介绍
Apr 28 Python
python斐波那契数列的计算方法
Sep 27 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
python爬虫爬取图片的简单代码
Jan 18 Python
python基于tkinter实现gif录屏功能
May 19 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去除重复字的实现代码
2011/09/16 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
php生成短网址示例
2014/05/05 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
javascript 播放器 控制
2007/01/22 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python中的Classes和Metaclasses详解
2015/04/02 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
python Django的web开发实例(入门)
2019/07/31 Python
python实现画循环圆
2019/11/23 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
python 如何设置守护进程
2020/10/29 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
服装设计师职业生涯规划范文
2014/02/28 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
JS封装cavans多种滤镜组件
2022/02/15 Javascript