Mnist是个简单的手写0~9的数据集,一般是作为新手练习之用。该代码读取Mnist数据集,并输出jpg图片和label的txt文件。
import numpy as np import struct import matplotlib.pyplot as plt from PIL import Image,ImageFont,ImageDrawimport cvimport scipy.miscfilename = 'DataSet/train-images-idx3-ubyte' #filename = 'C:/Users/haoming/Desktop/train-images-idx3-ubyte' filename1 = 'DataSet/train-labels-idx1-ubyte'binfile = open(filename,'rb')#以二进制方式打开 lbinfile = open(filename1,'rb')buf = binfile.read() lbuf = lbinfile.read() index = 0lind = 0magic, numImages, numRows, numColums = struct.unpack_from('>IIII',buf,index)#读取4个32 int PRint (magic,' ',numImages,' ',numRows,' ',numColums ) index += struct.calcsize('>IIII') lmagic, numl = struct.unpack_from('>II',lbuf,lind)print 'label'print (lmagic,' ', numl)lind += struct.calcsize('>II')outputLabel='Dataset_label/labels.txt'fw=open(outputLabel,"w+")outputImgDir='Dataset_img/'for i in range(numl): im = struct.unpack_from('>784B',buf,index) index += struct.calcsize('>784B' ) im = np.array(im) #np.transpose(im) #print im.shape im = im.reshape(28,28) imgdir=outputImgDir+str(i)+'.jpg' scipy.misc.imsave(imgdir, im)##########3 #tlabel=np.array((struct.unpack_from('>1B',lbuf,lind)))[0] tlabel=np.array((struct.unpack_from('>1B',lbuf,lind)))[0] #print tlabel fw.write(str(tlabel)+"/n") lind+=struct.calcsize('>1B')fw.close()binfile.close()lbinfile.close()#index +=784*123*8"""print indexim = struct.unpack_from('>784B',buf,index)#每张图是28*28=784Byte,这里只显示第一张图 index += struct.calcsize('>784B' ) im = np.array(im)#np.transpose(im) print im.shapeim = im.reshape(28,28)scipy.misc.imsave('outfile.jpg', im)#print( im ) fig = plt.figure() plt.imshow(im,cmap = 'binary')#黑白显示 plt.show() readImg=Image.open('outfile.jpg')readImg.show()arrImg = np.array(readImg)print 'ssst'print arrImg.shapeprint arrImg[5,:]"""主要引用:
https://zhidao.baidu.com/question/393151515257923165.html http://blog.csdn.net/panghaomingme/article/details/53466154
新闻热点
疑难解答