コード例 #1
0
        private async Task <bool> CheckSuspectPicture(DetectiveBotContext context)
        {
            if (context.Request.Attachments?.Count > 0)
            {
                try
                {
                    var match = 0;
                    var face  = await faceRecognitionService.GetFaceAttributes(context.Request.Attachments[0].ContentUrl);

                    if (face != null)
                    {
                        //check sex
                        if (face.FaceAttributes.Gender.ToLower() == Sex.ToLower())
                        {
                            match += 25;
                        }

                        //check age
                        switch ((int)Math.Round(face.FaceAttributes.Age))
                        {
                        case int n when(n <= 20):
                            if (Age == "<20")
                            {
                                match += 25;
                            }
                            break;

                        case int n when(n > 20 && n <= 30):
                            if (Age == "20-30")
                            {
                                match += 25;
                            }
                            break;

                        case int n when(n > 30 && n <= 40):
                            if (Age == "31-40")
                            {
                                match += 25;
                            }
                            break;

                        case int n when(n > 40 && n <= 50):
                            if (Age == "41-50")
                            {
                                match += 25;
                            }
                            break;

                        case int n when(n > 50):
                            if (Age == ">50")
                            {
                                match += 25;
                            }
                            break;
                        }

                        //check hair color
                        if (HairColor.ToLower() == "bald" && (face.FaceAttributes.Hair.Bald > 0.7))
                        {
                            match += 25;
                        }
                        else
                        {
                            if (face.FaceAttributes.Hair.HairColor != null &&
                                face.FaceAttributes.Hair.HairColor.Any(color => color.Color == (HairColorType)Enum.Parse(typeof(HairColorType), HairColor) &&
                                                                       color.Confidence > 0.7))
                            {
                                match += 25;
                            }
                        }

                        //check facial hair
                        if (FacialHair && (face.FaceAttributes.FacialHair.Beard > 0.7 ||
                                           face.FaceAttributes.FacialHair.Moustache > 0.7 ||
                                           face.FaceAttributes.FacialHair.Sideburns > 0.7))
                        {
                            match += 25;
                        }
                        else
                        {
                            if (!FacialHair && (face.FaceAttributes.FacialHair.Beard < 0.5 &&
                                                face.FaceAttributes.FacialHair.Moustache < 0.5 &&
                                                face.FaceAttributes.FacialHair.Sideburns < 0.5))
                            {
                                match += 25;
                            }
                        }
                    }

                    await context.SendActivity(context.Request.CreateReply($"This person matches the description for {match.ToString()}%"));
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine($"Exception: {ex.Message}");
                    await context.SendActivity(context.Request.CreateReply($"Error processing this image. Are you sure it contained a face?"));
                }
            }
            await context.SendActivity(context.Request.CreateReply($"Take a picture of a suspect and i'll check how far it matches the description"));

            State = TopicState.checkSuspectPicture;

            return(true);
        }
コード例 #2
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder(base.ToString());

            sb.Append("USR");

            if (IsOnline.HasValue)
            {
                sb.AppendFormat("-A{0}", IsOnline.Value ? "1" : "0");
            }

            if (!string.IsNullOrEmpty(Vorname))
            {
                sb.AppendFormat("-B{0}", Vorname.ToLower());
            }

            if (!string.IsNullOrEmpty(Name))
            {
                sb.AppendFormat("-C{0}", Name.ToLower());
            }

            if (!string.IsNullOrEmpty(Sex))
            {
                sb.AppendFormat("-D{0}", Sex.ToLower());
            }

            if (!string.IsNullOrEmpty(RelationStatus))
            {
                sb.AppendFormat("-E{0}", RelationStatus.ToLower());
            }

            if (!string.IsNullOrEmpty(AttractedTo))
            {
                sb.AppendFormat("-F{0}", AttractedTo.ToLower());
            }

            if (!string.IsNullOrEmpty(EyeColor))
            {
                sb.AppendFormat("-G{0}", EyeColor.ToLower());
            }

            if (!string.IsNullOrEmpty(HairColor))
            {
                sb.AppendFormat("-H{0}", HairColor.ToLower());
            }

            if (BodyHeightFrom.HasValue)
            {
                sb.AppendFormat("-I{0}", BodyHeightFrom.Value);
            }

            if (BodyHeightTo.HasValue)
            {
                sb.AppendFormat("-J{0}", BodyHeightTo.Value);
            }

            if (BodyWeightFrom.HasValue)
            {
                sb.AppendFormat("-K{0}", BodyWeightFrom.Value);
            }

            if (BodyWeightTo.HasValue)
            {
                sb.AppendFormat("-L{0}", BodyWeightTo.Value);
            }

            if (AgeFrom.HasValue)
            {
                sb.AppendFormat("-M{0}", AgeFrom.Value);
            }

            if (AgeTo.HasValue)
            {
                sb.AppendFormat("-N{0}", AgeTo.Value);
            }

            if (CommunityIDMember.HasValue)
            {
                sb.AppendFormat("-O{0}", CommunityIDMember.Value);
            }

            if (!string.IsNullOrEmpty(AddressCity))
            {
                sb.AppendFormat("-P{0}", AddressCity.ToLower());
            }

            if (!string.IsNullOrEmpty(AddressZip))
            {
                sb.AppendFormat("-Q{0}", AddressZip.ToLower());
            }

            if (!string.IsNullOrEmpty(AddressLand))
            {
                sb.AppendFormat("-R0}", AddressLand.ToLower());
            }

            if (AddressRangeKM.HasValue)
            {
                sb.AppendFormat("-S{0}", AddressRangeKM.Value);
            }

            if (!string.IsNullOrEmpty(InterestTopic))
            {
                sb.AppendFormat("-T0}", InterestTopic.ToLower());
            }

            if (!string.IsNullOrEmpty(Interesst))
            {
                sb.AppendFormat("-U0}", Interesst.ToLower());
            }

            if (!string.IsNullOrEmpty(Talent))
            {
                sb.AppendFormat("-V0}", Talent.ToLower());
            }

            if (ForObjectType.HasValue)
            {
                sb.AppendFormat("-W{0}", ForObjectType.Value);
            }

            if (LoadVisits.HasValue)
            {
                sb.AppendFormat("-X{0}", LoadVisits.Value ? "1" : "0");
            }

            return(sb.ToString());
        }