2016-06-20 2 views
1

일련의 이미지를 전달하는 신경망을 훈련하려고합니다.s3에서 numpy 배열로 이미지를 다운로드하는 방법은 무엇입니까?

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 사용하여 편안 다음과 같습니다에 전달하는 임시 파일에 저장하거나 generate a presigned url 다음 URL을 미리 체결했다고 생성의 예 끝점] (http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro)에서 S3 파일을 찾으십니까? 파일을 저장하고 파일을 읽는 비용이 너무 비쌉니까? – Jedi

답변

1

docs for imread에 따르면 파일 이름이나 URL 만 전달하는 것으로 나타납니다. 따라서 파일과 같은 객체는 없습니다. 그래서 당신은 두 가지 옵션이 다음과 같습니다.

import boto3 

s3 = boto3.client('s3') 
params = {'Bucket': 'foo', 'Key': 'img.jpg'} 
url = s3.generate_presigned_url(ClientMethod='get_object', Params=params) 
관련 문제