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中optionParser模块的使用方法实例教程
Aug 29 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
python实现顺序表的简单代码
Sep 28 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
基于Python中random.sample()的替代方案
May 23 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
python logging模块的使用详解
Oct 23 Python
python3实现简单飞机大战
Nov 29 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
长波知识介绍
2021/03/01 无线电
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
php常用图片处理类
2016/03/16 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
python异常和文件处理机制详解
2016/07/19 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
班级口号大全
2014/06/09 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
爱的承诺书
2015/01/20 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
学习经验交流会策划书
2015/11/02 职场文书
nginx设置资源请求目录的方式详解
2022/05/30 Servers