Pythonを使ってzip圧縮された画像ファイルを効率的に扱う方法を紹介します。この方法は、データサイエンスの画像分類コンペなどで、訓練(あるいはテスト)対象となる画像ファイルがzipに圧縮されている場合に特に有用です。
まず、必要なモジュールをインポートします。
import numpy as np
import io
from PIL import Image
import zipfile
次に、zipファイルのパスを指定します。
zip_path = '.\\data.zip'
配列格納用のリストを作成します。
train_X = []
zipファイルを読み込み、zipファイル内の各ファイルについてループします。
with zipfile.ZipFile(zip_path, 'r') as zip_file:
for info in zip_file.infolist():
if (info.filename != 'data/'):
with zip_file.open(info.filename) as img_file:
img_bin = io.BytesIO(img_file.read())
img = Image.open(img_bin)
img_array = np.array(img)
train_X.append(img_array)
train_X = np.array(train_X)
以上のコードで、zip圧縮された画像ファイルを一括で読み込み、numpyの配列に格納することができます。
この方法を使えば、一度に大量の画像データを効率的に扱うことができます。特に、画像データが大量に存在するデータサイエンスのコンペティションなどで役立つでしょう。