我正在嘗試創建一個比較人臉請求,該請求將從一個存盤桶中獲取輸入源影像并將其與第二個存盤桶中的所有目標影像進行比較。我正在嘗試通過為第二個存盤桶創建一個串列物件請求,然后創建一個基于物件鍵的目標影像的 foreach 物件回圈。但是,我收到轉換型別錯誤。
這是我的代碼:
public async Task<bool> FunctionHandler(string input, ILambdaContext context)
{
//number of matched faces
int matched = 0;
//Client setup
var rekognitionclient = new AmazonRekognitionClient();
var s3client = new AmazonS3Client();
//Create list of target images
ListObjectsRequest list = new ListObjectsRequest
{
BucketName = "bucket2"
};
ListObjectsResponse listre = s3client.ListObjectsAsync(list);
//loop of list
foreach(Amazon.S3.Model.S3Object obj in listre.S3Objects)
{
//face request with input and obj.key images
var comparefacesrequest = new CompareFacesRequest
{
SourceImage = new Image
{
S3Object = new S3Objects
{
Bucket = "bucket1",
Name = input
}
},
TargetImage = new Image
{
S3Object = new S3Objects
{
Bucket = "bucket2",
Name = obj.Key
}
},
};
//compare with confidence of 75 (subject to change) to current target image
var detectresponse = await rekognitionclient.CompareFacesAsync(comparefacesrequest);
detectresponse.FaceMatches.ForEach(match =>
{
ComparedFace face = match.Face;
if (match.Similarity > 75)
{
//if face detected, raise matched
matched ;
}
});
}
if (matched > 0)
{
return true;
}
return false;
}
我得到的錯誤是 s3client.ListObjectsAsync(list),它會產生以下錯誤
CS0029 無法將型別“System.Threading.Tasks.Task<Amazon.S3.Model.ListObjectsResponse>”隱式轉換為“Amazon.S3.Model.ListObjectsResponse”
我不知道系統將串列物件回應標記為任務是什么意思。有誰知道發生了什么事?
uj5u.com熱心網友回復:
在對 S3 一無所知的情況下,我猜你需要 await this:s3client.ListObjectsAsync(list);所以代碼是:
ListObjectsResponse listre = await s3client.ListObjectsAsync(list);
當方法名稱以 Async 為后綴時,通常是提示您需要等待它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/537789.html
上一篇:AWSS3上傳速度?
下一篇:掛在膠爬蟲臺階上的臺階功能
