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 相关文章推荐
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
自定义django admin model表单提交的例子
Aug 23 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
keras输出预测值和真实值方式
Jun 27 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 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
function.inc.php超越php
2006/12/09 PHP
MySQL中create table语句的基本语法是
2007/01/15 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python下的subprocess模块的入门指引
2015/04/16 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
大四自我鉴定范文
2013/10/06 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
合作意向书格式及范文
2014/03/31 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
小学生常见病防治方案
2014/06/06 职场文书
招标承诺书
2014/08/30 职场文书
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis