Чтение данных из Google Storage Bucket в массив - PullRequest
0 голосов
/ 06 сентября 2018

Как заменить эту функцию, если я хочу прочитать данные из корзины 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 голосов
/ 06 сентября 2018

Вместо этого вам нужно будет использовать функцию imdecode OpenCV вместе с пакетом 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")
    )
...