2016-12-13 2 views
1

У меня есть список под названием w (размер: 784), который я выводимый в PNG градаций серого изображения:преобразования изображений в оттенках серого вернуться к вектору

import matplotlib.pyplot as plt  
tmp = 1/(1+np.exp(-10*w/w.max())) 
plt.imshow(tmp.reshape(28,28),cmap="gray") 
plt.draw() 
plt.savefig("final_weight_vector") 

Теперь я хочу, чтобы прочитать изображение PNG назад быть вектор.

Решения я нашел до сих пор:

Первый:

import matplotlib.image as mpimg 
img=mpimg.imread('final_weight_vector.png') 

но img по-видимому, не может быть полутоновое, поскольку его размеры turend, чтобы быть (600, 800, 4).

Второе:

чтение файла как RGB и преобразование в оттенки серого:

im = Image.open('final_weight_vector.png').convert('LA') 

Однако, я не мог найти, как перебрать im, так что я понятия не имею, как к тому, что внутри. Кроме того, я не уверен, что вывод im будет иметь те же значения, что и у оригинала w.

Помогите, пожалуйста?

ответ

1

Проблема в том, что вы сохранили, вероятно, график изображения 28x28, а не самого изображения.

Чтобы не сомневаться, пожалуйста, просмотрите изображение. Готов поспорить, это 600x800, а не 28x28. Я также предполагаю, что он содержит много дополнительных элементов, таких как оси и отступы.

Если вы хотите сохранить свой массив в загружаемом формате, вы можете использовать numpy.save()numpy.load(), чтобы загрузить его).

Вы также можете использовать PIL, чтобы сохранить массив как изображение (например, используя что-то похожее на: http://code.activestate.com/recipes/577591-conversion-of-pil-image-and-numpy-array/)

+0

Лота ставок и предположив. Лучше попросить ОР отредактировать и уточнить исходный вопрос. –

Смежные вопросы