首页 > 解决方案 > 将数据从 Google 存储桶读取到阵列

问题描述

如果我想从 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")])       

标签: pythontensorflowgoogle-cloud-platformgoogle-cloud-storage

解决方案


您需要使用 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")
    )

推荐阅读