Python读入mnist二进制图像文件并显示实例

Flavia ·
更新时间:2024-09-20
· 709 次阅读

图像文件是自己仿照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二进制图像文件并显示实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

您可能感兴趣的文章:pytorch 把MNIST数据集转换成图片和txt的方法详解PyTorch手写数字识别(MNIST数据集)



mnist 进制 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号