2016-03-26 3 views
-1

У меня есть файл размером 7GB .tgz, который является архивом тысяч фотографий с высоким разрешением, с которыми я хотел бы работать в Python. Я могу сделать все следующее в случае одного изображения, но я не уверен, как работать с такими большими данными и форматом файла .tgz. У меня есть Googled, но, возможно, я не использую лучшие поисковые термины. Явный код будет наиболее полезен для меня, чтобы понять.Обработка больших данных в Python

Как загрузить данные .tgz в Python? (pickle, numpy, tarfile? pip install tarfile терпит неудачу.) В конечном итоге я захочу преобразовать их в массивы numpy.

Как сделать все изображения в заданное разрешение?

Как преобразовать все изображения в оттенки серого?

Целью является манипулирование данными для использования в сверточной нейронной сети (CNN).

+0

Хотя, не совсем ответ и еще одно предложение: если вам нужно обработать данные, возможно, стоит сначала распаковать данные, а затем обработать распакованные изображения несколько раз. –

ответ

0

Я бы использовал стандартный модуль tarfile (вам не нужно его устанавливать - он уже существует) для доступа к вашим данным сжатия и scipy.ndimage для обработки ваших изображений.

Вы можете начать here

1

Я не уверен, если обработка архива ваша проблема. Совершенно очевидно, что файл .tgz следует обрабатывать с помощью tarfile. tarfile в встроенном модуле в python, и вам не нужно pip install it.

#!/usr/bin/env python 

# import the tarfile 
from tarfile import TarFile 

# Open your tarfile for reading 
itgz = TarFile.gzopen("photos.tgz", 'r') 

# Open your tarfile for saving the images 
otgz = TarFile.gzopen("photos_edited.tgz", 'w') 

# Handle the images one-by-one 
for img_name in itgz.getnames() : 
    # Extract it to where ever you want 
    itgz.extract(img_name) 

    # Do the image processing numpy, PIL or any tool of your choice 

    # If you want to save the edited images back to a tar file 
    otgz.add(img_name) 

else: 
    itgz.close() 
    otgz.close() 
+0

Вместо 'itgz.extract', если вы используете' itgz.extractfile', вы получите файл как объект. Файл-подобный объект доступен только для чтения и предоставляет следующие методы: read(), readline(), readlines(), seek() и tell() – Marcus

Смежные вопросы