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 Django(图文)
Nov 04 Python
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
python主线程捕获子线程的方法
Jun 17 Python
python人民币小写转大写辅助工具
Jun 20 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
基于python if 判断选择结构的实例详解
May 06 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
python中lower函数实现方法及用法讲解
Dec 23 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 Python
Python中的 enumerate和zip详情
May 30 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
德劲1103的维修打理经验
2021/03/02 无线电
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
python文件操作相关知识点总结整理
2016/02/22 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python 自动化表单提交实例代码
2017/06/08 Python
python实现八大排序算法(2)
2017/09/14 Python
python re模块findall()函数实例解析
2018/01/19 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
为什么需要版本控制?
2013/08/08 面试题
大专毕业生简历的自我评价
2013/10/20 职场文书