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创建文件和追加文件内容实例
Oct 21 Python
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
python抓取网页中链接的静态图片
Jan 29 Python
python绘制圆柱体的方法
Jul 02 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
Windows下安装Scrapy
Oct 17 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
pycharm的console输入实现换行的方法
Jan 16 Python
Python虚拟环境venv用法详解
May 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使用SOAP调用.net的WebService数据
2013/11/12 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
python写入xml文件的方法
2015/05/08 Python
Python使用爬虫猜密码
2016/02/19 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
用python做游戏的细节详解
2019/06/25 Python
python3字符串操作总结
2019/07/24 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
亿企通软件测试面试题
2012/04/10 面试题
家具厂厂长岗位职责
2014/01/01 职场文书
标准自荐信范文
2014/01/29 职场文书
犯错检讨书
2014/02/21 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
个人汇报材料范文
2014/12/30 职场文书
详解Python中的for循环
2022/04/30 Python