我正在尝试从Rekognition中的图像获取边界框,我得到了标签,但得到了:
Keyerror'instances'作为回应['instances']
def detect_labels(bucket, key, max_labels=10, min_confidence=90, region="eu-west-1"):
rekognition = session.client("rekognition", region)
response = rekognition.detect_labels(
Image={
"S3Object": {
"Bucket": bucket,
"Name": key,
}
}, MaxLabels=10
)
return response
if __name__ == "__main__":
response= detect_labels(BUCKET, KEY)
print('Detected labels for ' + photo)
print()
for label in response['Labels']:
for instance in label['Instances']:
print (" Bounding box")
print (" Top: " + str(instance['BoundingBox']['Top']))
print ("----------")
print ()
请确保您使用的是最新的boto3 SDK。我发现boto3 v1.9.20不会返回实例数组,而当前的v1.9.84会返回实例数组。
除此之外,文档指出:
如果Label代表一个对象,则Instances包含每个实例的边界框...
这似乎意味着实例仅在标签代表对象时才存在。您的代码应检查给定标签是否确实具有实例,例如:
if 'Instances' in label:
for instance in label['Instances']:
# print details of instance
通过简单地将label
dict打印为JSON字符串并查看其实际包含内容来确认这一点也很简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句