2017-09-17 5 views
0

MNIST 데이터 세트에서 이미지는 CSV 형식으로되어 있으며 각 784 열은 픽셀 강도에 해당합니다. imshow으로 보지 않고 각각의 이미지를 저장하고 싶습니다.matplotlib를 사용하여 CSV에서 이미지를 저장하는 MNIST

import numpy as np 
import csv 
import matplotlib.pyplot as plt 
i=0 
with open('Book1.csv', 'r') as csv_file: 
for data in csv.reader(csv_file): 

    # The rest of columns are pixels 
    pixels = data[:] 

    # This array will be of 1D with length 784 
    # The pixel intensity values are integers from 0 to 255 
    pixels = np.array(pixels, dtype='uint8') 

    # Reshape the array into 28 x 28 array (2-dimensional array) 
    pixels = pixels.reshape((28, 28)) 
    i +=1 
    # Plot 
    plt.title('Label is {label}'.format(label=label)) 
    plt.imshow(pixels, cmap='gray') 
    plt.savefig(str(i))' 

이렇게하면 각 이미지를 저장할 수 없습니다.

+0

좀 더 구체적으로 기재 할 수 있습니까? 스크립트를 실행하면 정확히 무엇이 발생합니까? 마지막 줄 끝 부분에있는 아포스트로피가 의도적입니까? –

답변

0

원하는 확장자로 끝나야합니다 파일의 이름,

plt.savefig(str(i)+".png") 

하거나 format 지정해야합니다 : 당신이로 실행할 수 있습니다

plt.savefig(str(i), format="png") 

한 또 다른 문제는 그 후 모든 이미지가 서로 위에 배치되기 때문에 플로팅이 느려지는 동안. 이 문제를 피하려면 루프 끝에 plt.close()으로 전화하십시오.

+0

'plt.close()'를 사용해야한다는 점을 지적 해 주셔서 감사합니다. 사실, 코드는 제대로 실행됩니다. 루프없이 손으로 수백 개의 이미지를 저장했습니다. 루프와 동일한 이름을 사용했습니다. 이미지를 저장하는 데 너무 오래 걸렸으므로 프로그램이 실행되고 있지 않다고 생각했습니다. – khac

+0

'imshow를 사용하지 않고'는 무엇입니까? – StatsSorceress

+0

죄송합니다, OP는 '나는 imshow로 그들을 보지 않고이 이미지들 각각을 저장하고 싶다'고 말했다. 먼저 이미지를 표시하지 않고 솔루션이 작동합니까? – StatsSorceress