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中的输入和输出功能进行读取和写入的教程
Apr 14 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
python numpy中cumsum的用法详解
Oct 17 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
浅析matlab中imadjust函数
Feb 27 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 Python
一个入门级python爬虫教程详解
Jan 27 Python
在python3.9下如何安装scrapy的方法
Feb 03 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
js 省地市级联选择
2010/02/07 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
遗传算法之Python实现代码
2017/10/10 Python
python生成二维码的实例详解
2017/10/29 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
四年级语文教学反思
2014/02/05 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
商务日语专业自荐信
2014/04/17 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
鉴史问廉观后感
2015/06/10 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
MySQL通过binlog恢复数据
2021/05/27 MySQL