изменить размер изображения при загрузке в Python - PullRequest
0 голосов
/ 14 сентября 2018

Привет: Я хотел бы загрузить около 2400 изображений из папки в Python 3.6 для нейронных сетей, работает следующий код, однако он загружает изображения в исходном размере (2443, 320, 400, 3) после преобразование в массив. Как мне изменить его размер до 64х96? так что это (2443, 64, 96, 3) и меньше нагрузки на память. Отдельно, как мне это сделать, используя параллельную обработку, чтобы она была эффективной.

Спасибо!

IMAGE_PATH = 'drive/xyz/data/'
file_paths = glob.glob(path.join(IMAGE_PATH, '*.gif'))

# Load the images
images = [misc.imread(path) for path in file_paths]
images = np.asarray(images)

Вдохновленный этой ссылкой , я попытался сделать следующее:

from PIL import Image

basewidth = 96
IMAGE_PATH = 'drive/xyz/data/' 
file_paths = glob.glob(path.join(IMAGE_PATH, '*.gif'))

# Load the images img = [misc.imread(path) for path in file_paths]

wpercent = (basewidth/float(img.size[0])) 
hsize = int((float(img.size[1])*float(wpercent))) 
img = img.resize((basewidth,hsize), Image.ANTIALIAS) 
images = np.asarray(img)

однако, это привело к ошибке, написанной ниже. Любые предложения будут ценны. Спасибо.

AttributeError                            Traceback (most recent call last)
<ipython-input-7-56ac1d841c56> in <module>()
      9 img = [misc.imread(path) for path in file_paths]
     10 
---> 11 wpercent = (basewidth/float(img.size[0]))
     12 hsize = int((float(img.size[1])*float(wpercent)))
     13 img = img.resize((basewidth,hsize), Image.ANTIALIAS)

AttributeError: 'list' object has no attribute 'size'

1 Ответ

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

Сначала вы можете захотеть изменить размеры ваших изображений, затем вы можете использовать тот же метод для инициализации массивов с учетом папки выходного изображения.

Изменение размера изображения

Этоиспользует пакет PIL для изменения размера изображений, но любая библиотека должна делать то же самое, если она предоставляет метод изменения размера.

Здесь вы можете прочитать дальнейшие обсуждения Как изменить размер изображения с помощью PIL и сохранить егосоотношение сторон?

import os, sys
import Image

size = 128, 128

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".gif"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size, Image.ANTIALIAS)
            im.save(outfile, "GIF")
        except IOError:
            print "cannot create thumbnail for '%s'" % infile

Пример параллелизма

Что касается параллелизма, вы можете использовать этот пример в качестве основы и двигаться дальше.

Это из документации по питону https://docs.python.org/3/library/multiprocessing.html

from multiprocessing import Process

    def f(name):
        print('hello', name)

    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
...