如何使用PIL从Google Cloud Storage读取图片路径进行文本标注?
如何用PIL打开Google Cloud Storage中的图片
PIL的Image.open()不支持直接读取GCS的gs://路径,你可以用以下两种方案解决:
方案1:下载到本地临时文件后打开
借助google-cloud-storage库把GCS上的图片下载到本地临时路径,再用PIL读取:
from google.cloud import storage from PIL import Image # 初始化GCS客户端 storage_client = storage.Client() bucket_name = "img_platecapture" blob_name = "img_001.jpg" # 获取对应存储桶和文件 bucket = storage_client.bucket(bucket_name) blob = bucket.blob(blob_name) # 下载到本地临时文件(可自定义路径) local_temp_path = "/tmp/img_001.jpg" blob.download_to_filename(local_temp_path) # 用PIL打开本地文件 img = Image.open(local_temp_path)
方案2:直接读取二进制流(无需本地存储)
通过GCS的API获取图片二进制数据,用BytesIO包装后传给PIL,避免本地存储开销:
from google.cloud import storage from PIL import Image from io import BytesIO storage_client = storage.Client() bucket_name = "img_platecapture" blob_name = "img_001.jpg" bucket = storage_client.bucket(bucket_name) blob = bucket.blob(blob_name) # 获取图片二进制数据并转为可读取的流对象 img_binary = blob.download_as_bytes() img = Image.open(BytesIO(img_binary))
注意事项
- 确保代码运行环境已配置Google Cloud认证(比如设置
GOOGLE_APPLICATION_CREDENTIALS环境变量指向服务账号密钥文件) - 服务账号需要拥有目标GCS存储桶的读取权限
内容的提问来源于stack exchange,提问作者april
相关产品推荐
相关产品推荐

