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的内存
Dec 17 Python
python数据处理实战(必看篇)
Jun 11 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
python读取ini配置的类封装代码实例
Jan 08 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
Python下划线5种含义代码实例解析
Jul 10 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 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/11/25 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
Python中Random和Math模块学习笔记
2015/05/18 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
代码分析Python地图坐标转换
2018/02/08 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
java判断三位数的实例讲解
2019/06/10 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
特色蛋糕店创业计划书
2014/01/28 职场文书
美国留学经济担保书
2014/05/20 职场文书
走群众路线学习笔记
2014/11/06 职场文书
2015入党自传书范文
2015/06/26 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技