将数据从Google存储桶读取到阵列

时间:2018-09-06 14:32:14

标签: python tensorflow google-cloud-platform google-cloud-storage

如果我想从Google Cloud Storage存储桶(而不是本地存储)中读取数据并将其放入此函数中的数组中,该如何替换该函数?

def load_data(img_dir):
  return np.array(
    [cv2.imread(os.path.join(img_dir, img), 0).flatten() for img in os.listdir(img_dir) if img.endswith(".jpg")])       

1 个答案:

答案 0 :(得分:1)

您需要使用OpenCV的imdecode函数以及google-cloud-storage软件包:

from google.cloud import storage

import numpy as np
import cv2

def load_data(bucket_name):
    bucket = storage.Client().get_bucket(bucket_name)

    return np.array(
        cv2.imdecode(
            np.asarray(bytearray(blob.download_as_string()), dtype=np.uint8), 0
        ).flatten()
        for blob in bucket.list_blobs()
        if blob.name.endswith(".jpg")
    )