图像文件是自己仿照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 np1.图片和数组互转
# 图片转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.数组 和 图片二进制数据互转
或许还有别的方式也能实现 图片二进制数据 和 数组的转换,不足之处希望大家指出
以上这篇Python读入mnist二进制图像文件并显示实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。