我正在尝试按照AWS文档中的说明,使用AWS Rekognition through Python boto3来比较面孔。
我的API调用是:
client = boto3.client('rekognition', aws_access_key_id=key, aws_secret_access_key=secret, region_name=region )
source_bytes = open('source.jpg', 'rb')
target_bytes = open('target.jpg', 'rb')
response = client.compare_faces(
SourceImage = {
'Bytes':bytearray(source_bytes.read())
},
TargetImage = {
'Bytes':bytearray(target_bytes.read())
},
SimilarityThreshold = SIMILARITY_THRESHOLD
)
source_image.close()
target_image.close()
但每次运行此程序时,都会出现以下错误:
botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameterException) when calling the CompareFaces operation: Request has Invalid Parameters
我已正确指定了密码,密钥,区域和阈值。如何清除此错误并使请求调用工作?
答案 0 :(得分:1)
你的代码非常好,
图像维度在AWS Rekognition方面很重要。
亚马逊重新认知的限制
以下是Amazon Rekognition中的限制列表:
来源:AWS Docs
答案 1 :(得分:1)
您打开文件的方式,不需要转换为bytearray。
试试这个:
client = boto3.client('rekognition', aws_access_key_id=key, aws_secret_access_key=secret, region_name=region )
source_bytes = open('source.jpg', 'rb')
target_bytes = open('target.jpg', 'rb')
response = client.compare_faces(
SourceImage = {
'Bytes':source_bytes.read()
},
TargetImage = {
'Bytes':target_bytes.read()
},
SimilarityThreshold = SIMILARITY_THRESHOLD
)
source_image.close()
target_image.close()
答案 2 :(得分:0)
对于那些仍在寻找答案的人,
我遇到了同样的问题,而@mohanbabu则指向compare_faces
的官方文档,但我意识到compare_faces
在SourceImage
和{ TargetImage
。我首先通过使用aws的detect_faces
检测脸部并将检测到的脸部传递给compare_faces
来证实了这一点。
compare_faces
在detect_faces
检测到的脸部模糊不清的情况下几乎一直失败。
因此,要想总结一下SourceImage
或TargetImage
中的任何一个,即使它们紧紧地修剪在AND
的面孔上,但该面孔并非立即可见,compare_faces
就会失败。
还有其他原因,但是这种观察对我有用。
例如:
在上图中,您可以很自信地说中间有一张脸
但是
现在,不是很明显。
这是我至少要检查一下图像的原因,并且您应该知道。