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

时间:2021-05-22

图像文件是自己仿照mnist格式制作,每张图像大小为128*128

import structimport matplotlib.pyplot as pltimport numpy as np#读入整个训练数据集图像filename = 'train-images-idx3-ubyte'binfile = open(filename, 'rb')buf = binfile.read()#读取头四个32bit的intergerindex = 0magic, numImages, numRows, numColumns = struct.unpack_from('>IIII', buf, index)index += struct.calcsize('>IIII')#读取一个图片,16384=128*128im = 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 pltimport cv2from PIL import Imagefrom io import BytesIOimport 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二进制图像文件并显示实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章