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进阶教程之模块(module)介绍
Aug 30 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
Django开发的简易留言板案例详解
Dec 04 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
python算的上脚本语言吗
Jun 22 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
Python如何输出警告信息
Jul 30 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 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执行速度全攻略(上)
2006/10/09 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
php和asp语法上的区别总结
2019/05/12 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
Python实现简单的可逆加密程序实例
2015/03/05 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python中的下划线详解
2015/06/24 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python字符串中的单双引
2017/02/16 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
小学教师管理制度
2014/01/18 职场文书
2014政务公开实施方案
2014/02/19 职场文书
合作投资意向书
2014/04/01 职场文书
寄语学生的话
2014/04/10 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
护士自我推荐信范文
2015/03/24 职场文书
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle