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使用os模块和fileinput模块来操作文件目录
Jan 19 Python
Python编程实现的图片识别功能示例
Aug 03 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
创建pycharm的自定义python模板方法
May 23 Python
python删除字符串中指定字符的方法
Aug 13 Python
windows下python安装小白入门教程
Sep 18 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
浅析python redis的连接及相关操作
Nov 07 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
全网最全python库selenium自动化使用详细教程
Jan 12 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
PHP4在Windows2000下的安装
2006/10/09 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
Python 装饰器深入理解
2017/03/16 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
国际贸易个人求职信范文
2014/01/04 职场文书
入党思想汇报
2014/01/05 职场文书
开业庆典邀请函
2014/01/08 职场文书
教师现实表现材料
2014/02/14 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
服装设计专业自荐信
2014/06/17 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
乌镇导游词
2015/02/02 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
主持稿开场白
2015/06/01 职场文书
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python