Как я могу сделать 1 300 000 изображений в одном файле массива? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть около 1 300 000 изображений.Чтобы уменьшить стоимость ввода-вывода, я хочу сделать один файл из всех изображений.Итак, файл должен быть (1300000, 256, 256, 3).

Я намеревался решить эту проблему с помощью numpy, к сожалению, я не могу прочитать и записать все изображения одновременно, потому что у меня только 16 ГБ оперативной памяти.

Не могли бы вы предложить какой-нибудь способ, чтобы решить это эффективно?

1 Ответ

1 голос
/ 16 апреля 2019

Вам нужно будет объединить изображения по одному.Вот возможное решение с использованием PIL / Pillow

import sys
import glob
from PIL import Image

def concat_two_images(image1, image2):
    images = map(Image.open, [image1, image2])
    widths, heights = zip(*(i.size for i in images))

    total_width = sum(widths)
    max_height = max(heights)

    new_im = Image.new('RGB', (total_width, max_height))

    x_offset = 0
    for im in images:
        new_im.paste(im, (x_offset,0))
        x_offset += im.size[0]

    new_im.save('concat_image.jpg')
    return 'concat_image.jpg'


first_concat_image = concat_two_images('test_image1.jpg', 'test_image2.jpg')
for image in glob.glob('*.jpg'):
     # TODO - Add code to skip the first 2 images
     new_image = concat_two_images(first_concat_image, image)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...