2013-01-23 27 views
1

我需要比較2張照片的相似度。例如兒子和父親的照片,並返回其相似度的百分比。我用於SkyBiometry.Client.FC。 API返回的結果有問題。在所有識別的情況下,我可以獲得60%-68%的相似性(閾值)。 最後我試圖比較兩張相同的圖片,並得到54%的結果。我很困惑。我做錯了什麼?這是我的代碼:Handle SkyBiometry API

var client = new FCClient("my client id", "my client secret"); 

      var path = Server.MapPath("~/Content/Upload/1"); 

      var ids = new List<string> { "my client id" }; 
      var urls = new List<string>(); 

      Stream firstPicStream = System.IO.File.OpenRead(Path.Combine(path, "me.jpg")); 
      Stream secondPicStream = System.IO.File.OpenRead(Path.Combine(path, "me.jpg")); 

      var result1 = client.Faces.EndDetect(client.Faces.BeginDetect(null, new Stream[] { firstPicStream }, Detector.Aggressive, Attributes.Default, null, null)); 
      var result2 = client.Faces.EndDetect(client.Faces.BeginDetect(null, new Stream[] { secondPicStream }, Detector.Aggressive, Attributes.Default, null, null)); 

      urls.Add(result1.Photos[0].Url); 
      urls.Add(result2.Photos[0].Url); 

      var tags1 = result1.Photos[0].Tags; 
      var tags2 = result2.Photos[0].Tags; 
      var tagsIds = tags1.Select(tag => tag.TagId).ToList(); 
      tagsIds.AddRange(tags2.Select(tag => tag.TagId)); 

      var tagSaveResponce = client.Tags.EndSave(client.Tags.BeginSave(tagsIds, "My Namespace", "label", null, null)); 

      var recognizeResult = client.Faces.EndRecognize(client.Faces.BeginRecognize(ids, urls, null, "My Namespace", Detector.Aggressive, Attributes.Default, null, null)); 
+0

你可以在那裏測試那兩張照片網站,看看是否產生不同的結果? – Shoban

回答

4

您是否在面板/列車標記之後調用/保存爲您保存新標籤的用戶?因爲如果你不這樣做,你只能用舊的用戶標籤進行識別。 另請注意,用戶標識不能有空格,請確保檢查FCResponse.Status屬性以查找可能的錯誤。