ZIPファイルから、skimage と PIL で 画像を読み込む

zip を解凍せずに処理していきたい(Diskを圧迫するため)。

import pandas as pd
import numpy as np

import skimage.io
from PIL import Image, ImageFile

import io


def get_pil_inzip(_zip_path, image_idx):
    image_id = files_in_zip_dic[image_idx][0]
    image_path = os.path.join(image_id, 'images', files_in_zip_dic[image_idx][1]['images'][0])
    with ZipFile(_zip_path) as zf:
        with zf.open(image_path) as f:
            image = Image.open(f)
    return image


# 一度 BytesIO でバイナリファイルとして取り込む。
def get_skimage_inzip(_zip_path, image_idx):
    image_id = files_in_zip_dic[image_idx][0]
    image_path = os.path.join(image_id, 'images', files_in_zip_dic[image_idx][1]['images'][0])
    with ZipFile(_zip_path) as zf:
        with zf.open(image_path) as f:
            img_bin = io.BytesIO(f.read())
            image = skimage.io.imread(img_bin)
    return image