コード例 #1
0
        public MainWindow()
        {
            InitializeComponent();
            logger = new LogCallBack(PrintLog);

            string path = @"model\";

            SeetafaceHelper.SetDisplayLog(logger);
            SeetafaceHelper.SetModelDirectory(Encoding.Default.GetBytes(path));
            ret = SeetafaceHelper.Init();
            initRects();
        }
コード例 #2
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (ret)
            {
                OpenFileDialog ofd = new OpenFileDialog();
                if (ofd.ShowDialog() == true)
                {
                    rects.ForEach(r => r.Visibility    = Visibility.Hidden);
                    ellipses.ForEach(a => a.Visibility = Visibility.Hidden);

                    BitmapImage bi = new BitmapImage();
                    // BitmapImage.UriSource must be in a BeginInit/EndInit block.
                    bi.BeginInit();
                    bi.UriSource = new Uri(ofd.FileName, UriKind.RelativeOrAbsolute);
                    bi.EndInit();
                    // Set the image source.
                    img.Width  = bi.Width;
                    img.Height = bi.Height;
                    img.Source = bi;


                    //FaceInfo faceInfo = new FaceInfo();
                    //var faceCount = SeetafaceHelper.DetectFace(
                    //    ofd.FileName,
                    //    ref faceInfo
                    //);

                    StringBuilder json      = new StringBuilder(500);
                    var           faceCount = SeetafaceHelper.DetectFaces(
                        ofd.FileName,
                        json
                        );

                    //if (faceCount > 0)
                    {
                        //MessageBox.Show(json.ToString());
                        JsonSerializer serializer = new JsonSerializer();
                        FaceInfo[]     faces      = serializer.Deserialize <FaceInfo[]>(
                            new JsonTextReader(
                                new StringReader(json.ToString())
                                )
                            );

                        for (int i = 0; i < faceCount; i++)
                        {
                            var faceInfo = faces[i];
                            var rect     = rects[i];
                            rect.Margin     = new Thickness(faceInfo.bbox.x, faceInfo.bbox.y, 0, 0);
                            rect.Width      = faceInfo.bbox.width;
                            rect.Height     = faceInfo.bbox.height;
                            rect.Visibility = Visibility.Visible;
                        }
                    }
                    //else
                    //    MessageBox.Show("检测失败");
                }
            }
            else
            {
                MessageBox.Show("初始化失败");
            }
        }
コード例 #3
0
        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
            if (ret)
            {
                feat2 = new float[2048];
                feat  = feat2;
                OpenFileDialog ofd = new OpenFileDialog();
                if (ofd.ShowDialog() == true)
                {
                    rects.ForEach(r => r.Visibility    = Visibility.Hidden);
                    ellipses.ForEach(a => a.Visibility = Visibility.Hidden);

                    BitmapImage bi = new BitmapImage();
                    bi.BeginInit();
                    bi.UriSource = new Uri(ofd.FileName, UriKind.RelativeOrAbsolute);
                    bi.EndInit();
                    // Set the image source.
                    img.Width  = bi.Width;
                    img.Height = bi.Height;
                    img.Source = bi;


                    StringBuilder json      = new StringBuilder(1500);
                    var           faceCount = SeetafaceHelper.Alignment(
                        ofd.FileName,
                        json
                        );

                    if (faceCount > 0)
                    {
                        JsonSerializer    serializer = new JsonSerializer();
                        AlignmentResult[] faces      = serializer.Deserialize <AlignmentResult[]>(
                            new JsonTextReader(
                                new StringReader(json.ToString())
                                )
                            );

                        //画矩形
                        for (int i = 0; i < faceCount; i++)
                        {
                            var faceInfo = faces[i].face;
                            var rect     = rects[i];
                            rect.Margin     = new Thickness(faceInfo.bbox.x, faceInfo.bbox.y, 0, 0);
                            rect.Width      = faceInfo.bbox.width;
                            rect.Height     = faceInfo.bbox.height;
                            rect.Visibility = Visibility.Visible;

                            var points = faces[i].landmark;
                            //画点
                            for (int j = i * 5, k = 0; k < 5; j++, k++)
                            {
                                ellipses[j].Margin     = new Thickness(points[k].x, points[k].y, 0, 0);
                                ellipses[j].Visibility = Visibility.Visible;
                            }
                        }

                        //float[] feat = SeetafaceHelper.ExtractFeature(ofd.FileName, ref faces[0].face, ref faces[0].landmark);
                        SeetafaceHelper.ExtractFeature(ofd.FileName, ref faces[0], feat);

                        double sim = SeetafaceHelper.CalcSimilarity(feat1, feat2);
                        MessageBox.Show("相似度:" + sim);
                    }
                    else
                    {
                        MessageBox.Show("检测失败");
                    }
                }
            }
            else
            {
                MessageBox.Show("初始化失败");
            }
        }