преобразование изображения в массив NumPy, затем сохранить в TXT-файл, а затем снова преобразовать .TXT в изображение - PullRequest
0 голосов
/ 31 октября 2019

У меня есть три этапа: 1. преобразовать изображение в массив numpy 2. сохранить этот массив в текстовом файле 3. преобразовать массив в изображение, прочитав этот текстовый файл

Я попробовал приведенный ниже код, которыйпреобразование изображения в массив и повторное чтение того же массива из текстового файла

from PIL import Image
import numpy
im = Image.open("a.jpg") # img size (480,910,3)

np_im = numpy.array(im)

with open('test.txt', 'w') as outfile:
    for slice_2d in np_im:
        numpy.savetxt(outfile, slice_2d)

new_data = numpy.loadtxt('test.txt')

new_data=new_data.reshape((480,910,3))

img = Image.fromarray(new_data,'RGB')
img.save('my.bmp')
img.show()

, если я сравниваю массив (до сохранения и после загрузки из файла и изменения формы), массив выглядит точно так же (за исключением точки). ех.

[[[ 48  58  24]
  [ 48  58  24]
  [ 47  57  23]
... 
and 
[[[ 48.  58.  24.]
  [ 48.  58.  24.]
  [ 47.  57.  23.]
  ...

но изображение, которое я получаю, полностью искажено. почему так?

Ответы [ 2 ]

1 голос
/ 31 октября 2019

после некоторого упражнения я получил ответ

img = Image.fromarray(new_data.astype(numpy.uint8),'RGB')
0 голосов
/ 31 октября 2019

Вас может заинтересовать numpy.savetxt. Звучит так, будто вы пытаетесь это построить.

Также есть дополнительный numpy.loadtxt.

Если вы передаете savetxt имя файла, оканчивающееся на .gz, это даже сжимает данные. loadtxt понимает это точно так же.

Это будет работать для произвольных numpy массивов.

...