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实现SMTP邮件发送功能
Jun 16 Python
微信跳一跳小游戏python脚本
Jan 05 Python
python 中字典嵌套列表的方法
Jul 03 Python
python实现字符串和字典的转换
Sep 29 Python
python贪吃蛇游戏代码
Apr 18 Python
python实现高斯判别分析算法的例子
Dec 09 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
Python使用openpyxl复制整张sheet
Mar 24 Python
python编写函数注意事项总结
Mar 29 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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读取IMAP邮件
2006/10/09 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
python字典按照value排序方法
2020/12/28 Python
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
捐款倡议书范文
2014/02/02 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
财务工作失误检讨书
2015/02/19 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers