Python: Как сохранить изображение в формате каналов, строк, столбцов? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть изображение в формате (каналы, строки, столбцы).

Это пустой массив.

Как сохранить его в этом формате?

Кажется, что большинство библиотек (OpenCV, imageio и т. Д.) Хотят, чтобы оно было (строки, столбцы) или (строки, столбцы, каналы).

Примечание. Я не ищу, как изменить формуimage / numpy array и сохраните его.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы можете сделать это, используя PIL.

from PIL import Image
# image_array is of shape (3, height, width) with the 3 channels in order as R, G, B
im = Image.fromarray(image_array, mode="RGB")
im.size # (height, width)
# Save the image
im.save("name_of_file")
0 голосов
/ 19 сентября 2018

Если вы хотите сохранить массив numpy, вы можете использовать pickle.(Я думаю, это то, что вы спрашиваете.) Pickle - это модуль Python, который позволяет вам сохранить переменную или объект в файл и получить его позже.Предполагая, что ваш массивный массив имеет имя image, следующий код должен работать.

import pickle

image = []  # just using an empty list as an example, any object should work
file = open("img.dat", "wb")
pickle.dump(image, file)
file.close()

file = open("img.dat", "rb")
retrieved = pickle.load(file)
file.close()

print(image, retrieved)

Pickle может сохранять и извлекать данные из файла, используя dump и load.Файлы должны быть загружены с использованием бинарного чтения и записи в функции открытия файлов в Python open().Приведенный выше код можно сократить, если открыть файл в той же строке, что и при загрузке или выводе данных.

import pickle

image = []
pickle.dump(image, open("img.dat", "wb"))
retrieved = pickle.load(open("img.dat", "rb"))
print(image, retrieved)
...