前提・実現したいこと
1枚目は1人、2枚目は複数人の集合写真を用意し2つの画像から同一人物を探すということをやっています
しかし実行しても複数人の検出結果が出ず1人の結果しか検出されません。私のプログラムの描き方が間違っているのは分かるのですがどう直したらいいのかわかりません
実行結果
この写真に写っている人数は5
0人目は0.225%の確率で同一人物です
1人目は0.225%の確率で同一人物です
2人目は0.225%の確率で同一人物です
3人目は0.225%の確率で同一人物です
4人目は0.225%の確率で同一人物です
該当のソースコード
c#
namespace _0705
{
class Program
{
static void Main(string[] args)
{
MainAsync().Wait();
Console.ReadLine(); } static async Task MainAsync() { IFaceServiceClient faceServiceClient = new FaceServiceClient("faceapiのkey"); Stream p1Image = File.OpenRead(個人写真); var p1 = await faceServiceClient.DetectAsync(p1Image); Stream p2Image = File.OpenRead(5人写った集合写真); var p2 = await faceServiceClient.DetectAsync(p2Image); { Console.WriteLine("この写真に写っている人数は" + p2.Length); } var result = await faceServiceClient.VerifyAsync(p1[0].FaceId, p2[0].FaceId); foreach (var nameObj in p2.Select((value, index) => new { value, index })) { Console.WriteLine("{0}人目は", nameObj.index); Console.WriteLine("{0}% の確率で同一人物です", result.Confidence.ToString()); p1Image.Close(); p2Image.Close(); } } }
}
間違っていると思われる個所
var result = await faceServiceClient.VerifyAsync(p1[0].FaceId, p2[0].FaceId);
foreach (var nameObj in p2.Select((value, index) => new { value, index }))
{
Console.WriteLine("{0}人目は", nameObj.index); Console.WriteLine("{0}% の確率で同一人物です", result.Confidence.ToString()); p1Image.Close(); p2Image.Close(); } } }
}
補足情報(FW/ツールのバージョンなど)
visualstudio2017
c#
microsoft faceapi
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/18 04:33