2016-06-20 6 views
1

私は一連の画像を渡すニューラルネットワークを訓練しようとしています。num3の配列としてs3からイメージをダウンロードするには?

s3 = boto3.resource('s3') 
my_bucket = s3.Bucket('some-bucket') 
def my_generator(): 
    for object in my_bucket.objects.all(): 
     image_array = io.imread(object) # this will not work. object is of type s3.ObjectSummary(bucket_name='manga-learn-data', key=u'one-piece-colored-5340113_06_05.png') whereas io.imread is expecting a url or uri. 
     yield image_array 

しかし、それimage_array変数は動作しません:私はこのような何かをしたいnumpyの配列

from skimage import io 
image_array = io.imread(url) 

ように各画像を渡すジェネレータを作成します。 amazon s3から画像をダウンロードすることがわかると、ファイルをファイルにダウンロードすることができます。私は配列として開くことができるイメージオブジェクトにそれをダウンロードしたい。

+0

あなたは[ビルトインHTTPを使用して快適だろう。次の2つのオプションを持っているようなので、それが見えますエンドポイント](http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro)ファイルを保存して読み込むコストが高すぎますか? – Jedi

答えて

1

docs for imreadに基づいて、ファイル名またはURLの受け渡しのみがサポートされているようです。したがって、ファイルのようなオブジェクトはありません。渡すために一時ファイルに保存したり、generate a presigned urlここで事前に署名したURLを生成する例です:

import boto3 

s3 = boto3.client('s3') 
params = {'Bucket': 'foo', 'Key': 'img.jpg'} 
url = s3.generate_presigned_url(ClientMethod='get_object', Params=params) 
関連する問題