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