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 相关文章推荐
动态创建类实例代码
Oct 07 Python
python进阶教程之词典、字典、dict
Aug 29 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
selenium处理元素定位点击无效问题
Jun 12 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python数据归一化及三种方法详解
Aug 06 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
python的help函数如何使用
Jun 11 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 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安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
如何在PHP中生成随机数
2020/06/04 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
对Django url的几种使用方式详解
2019/08/06 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
Python实现自动签到脚本功能
2020/08/20 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python