public static String[] Serialize(rsid.UserFeatures user)
        {
            String[] ret = new string[8];
            ret[0] = "{";
            ret[1] = "\"userID\":\"" + user.userID + "\",";
            ret[2] = "\"version\":" + user.faceprints.version + ",";
            ret[3] = "\"num of descriptors\":" + user.faceprints.numberOfDescriptors + ",";
            ret[4] = "\"features type\":" + user.faceprints.featuresType + ",";
            StringBuilder sb = new StringBuilder();

            foreach (short f in user.faceprints.avgDescriptor)
            {
                sb.Append(f + ",");
            }
            ret[5] = "\"avgDescriptor\": [" + sb.ToString() + "],";
            sb     = new StringBuilder();
            foreach (short f in user.faceprints.origDescriptor)
            {
                sb.Append(f + ",");
            }
            ret[6] = "\"origDescriptor\": [" + sb.ToString() + "],";
            ret[7] = "}";

            return(ret);
        }
 public static rsid.UserFeatures Deserialize(string[] user_string)
 {
     try
     {
         rsid.UserFeatures user_features = new rsid.UserFeatures();
         user_features.faceprints = new rsid.Faceprints();
         for (int i = 0; i < user_string.Length; i++)
         {
             var line = user_string[i].Replace("\"", "");
             if (line.Contains("userID"))
             {
                 user_features.userID = line.Replace("userID:", "").Replace(",", "");
             }
             else if (line.Contains("version"))
             {
                 user_features.faceprints.version = Int32.Parse(line.Replace("version:", "").Replace(",", ""));
             }
             else if (line.Contains("num of descriptors"))
             {
                 user_features.faceprints.numberOfDescriptors = Int32.Parse(line.Replace("num of descriptors:", "").Replace(",", ""));
             }
             else if (line.Contains("features type"))
             {
                 user_features.faceprints.featuresType = ushort.Parse(line.Replace("features type:", "").Replace(",", ""));
             }
             else if (line.Contains("avgDescriptor"))
             {
                 var features_s = line.Replace("avgDescriptor:", "").Replace("[", "").Replace("]", "").Replace(",,", "");
                 var features   = features_s.Split(',');
                 user_features.faceprints.avgDescriptor = new short[features.Length];
                 for (int j = 0; j < features.Length; j++)
                 {
                     user_features.faceprints.avgDescriptor[j] = Int16.Parse(features[j]);
                 }
                 if (user_features.faceprints.avgDescriptor.Length != 256)
                 {
                     throw new Exception("Descriptor length is invalid");
                 }
             }
             else if (line.Contains("origDescriptor"))
             {
                 var features_s = line.Replace("origDescriptor:", "").Replace("[", "").Replace("]", "").Replace(",,", "");
                 var features   = features_s.Split(',');
                 user_features.faceprints.origDescriptor = new short[features.Length];
                 for (int j = 0; j < features.Length; j++)
                 {
                     user_features.faceprints.origDescriptor[j] = Int16.Parse(features[j]);
                     if (user_features.faceprints.origDescriptor.Length != 256)
                     {
                         throw new Exception("Descriptor length is invalid");
                     }
                 }
             }
         }
         return(user_features);
     }
     catch (Exception ex)
     {
         Console.WriteLine("DB file is in incorrect format");
     }
     return(new rsid.UserFeatures());
 }
Esempio n. 3
0
        public bool SetUserFeatures(rsid.UserFeatures user_features)
        {
            var status = rsid_set_user_features(_handle, user_features.userID, ref user_features.faceprints);

            return(status == Status.Ok);
        }