2016-03-05 2 views
0

Я пытаюсь преобразовать uint8 array изображения 48x48 в соответствующий файл изображения 48x48 (jpg/jpeg/gif). Я попытался преобразовать содержимое массива в первый двоичный файл, а затем написал («wb» режим) в файл, но это не сработало.Преобразование массива uint8 в изображение

Есть ли способ, которым я могу это сделать?

+0

Вы можете преобразовать массив numpy в PIL.image, а затем использовать метод «save» для его кодирования в jpg –

+0

@ Yaroslav Yup есть способ сделать это, используя библиотеку PIL https://www.kaggle.com/c/challenge-in-presentation-learning-facial-expression-recognition-challenge/forums/t/4393/data-set – serpent403

ответ

2

Если вы производите изображение в TensorFlow (как я выводя из тега), вы можете использовать tf.image.encode_jpeg() или tf.image.encode_png() опа кодировать uint8 тензор как образ:

uint8_data = ... 
image_data = tf.image.encode_png(uint8_data) 

Результат либо op - это тензор tf.string, который вы можете оценить и записать в файл.

+0

Спасибо @mrry! Btw Я нашел способ сделать это, используя библиотеку python PIL https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/forums/t/4393/data-set – serpent403

1

Мне удалось очень легко использовать Octave. Здесь я попытался создать случайную матрицу 48x48, а затем я сохранил изображение в формате jpg.

img = rand(48,48); 
imwrite(img, "test.jpg") 

Image of 48x48

Вы можете сохранить любой тип изображения с таким подходом.

Если вы можете дать более подробную информацию о том, чего вы хотите достичь. Вам нужно сделать это только один раз, или вам нужно это как часть программы.

Надеюсь, что помогло.