我正在测试图像识别。到目前为止很好。我遇到的问题是在CLI中索引面。我当时可以索引一个,但是,我想告诉AWS索引存储桶中的所有面。在我称之为面部时,要对其进行索引:
aws rekognition index-faces --image "S3Object={Bucket=bname,Name=123.jpg}" --collection-id "myCollection" --detection-attributes "ALL" --external-image-id "myImgID"
如何告诉它索引“名称”存储桶中的所有图像?
I tried this:
aws rekognition index-faces --image "S3Object={Bucket=bname}" --collection-id "myCollection" --detection-attributes "ALL" --external-image-id "myImgID"
没有运气。
答案 0 :(得分:2)
您目前无法在一个index-faces调用中索引多个面。调用存储桶上的get-objects然后遍历结果的脚本将实现您想要的效果。
答案 1 :(得分:0)
如果它在将来帮助任何人,我有类似的需求,所以我编写了这个Python 3.6脚本来完成@ chris-adzima所推荐的,并且我从lambda函数执行它。
import boto3
import concurrent.futures
bucket_name = "MY_BUCKET_NAME"
collection_id = "MY_COLLECTION_ID"
rekognition = boto3.client('rekognition')
s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket_name)
def handle_image(key):
rekognition.index_faces(
CollectionId=collection_id,
Image={
'S3Object': {
'Bucket': bucket_name,
'Name': key
}
}
)
def lambda_handler(event, context):
pic_keys = [o.key for o in bucket.objects.all() if o.key.endswith('.png')]
with concurrent.futures.ThreadPoolExecutor() as executor:
executor.map(handle_image, pic_keys)