Пример #1
0
        public void PrintResults()
        {
            for (int f = 0; f < faceDetectRects.Count; f++)
            {
                ScoredRect      r = faceDetectRects[f];
                EyeDetectResult e = eyeDetectResults[f];
                Console.Write("Detect {0} {1} {2} {3}  ", r.X, r.Y, r.Width, r.Height);
                Console.Write("Eye {0} {1} {2} {3}  ", e.LeftEye.X, e.LeftEye.Y, e.RightEye.X, e.RightEye.Y);
                if (e is FaceFeatureResult)
                {
                    FaceFeatureResult faceResult = e as FaceFeatureResult;
                    Console.Write("Nose {0} {1}  ", faceResult.Nose.X, faceResult.Nose.Y);
                    Console.Write("Mouth {0} {1} {2} {3}  ", faceResult.LeftMouth.X, faceResult.LeftMouth.Y, faceResult.RightMouth.X, faceResult.RightMouth.Y);
                }


                Console.WriteLine();
            }
        }
Пример #2
0
        void RenderImage(Graphics graf)
        {
            if (_ImgCol == null ||
                listBoxImg.SelectedIndex < 0 ||
                listBoxImg.SelectedIndex >= _ImgCol.ImgList.Count
                )
            {
                _fImgDirty           =
                    _fDetectionDirty = false;

                return;
            }

            LabeledImg labeledImg = _ImgCol.ImgList[listBoxImg.SelectedIndex];

            // render the image
            if (_fImgDirty)
            {
                labelImgName.Text = labeledImg.FileName;

                Rectangle rect = labelImageBorder.Bounds;
                rect.Width  = labelHeader.Left - 1 - labelImageBorder.Bounds.Left;
                rect.Height = labelStatus.Top - 1 - labelImageBorder.Bounds.Top;

                graf.FillRectangle(new SolidBrush(BackColor), rect);

                labeledImg.Render(graf, labelImageBorder.Bounds);

                if (checkBoxLabel.Checked)
                {
                    labeledImg.RenderAnnotations(graf, labelImageBorder.Bounds);
                }

                _fImgDirty = false;
            }

            if (_fDetectionDirty)
            {
                if (checkBoxDetect.Checked)
                {
                    DetectionResult detRes = DetectFaces(labeledImg);

                    if (detRes != null)
                    {
                        float eThreshold = trackBarThreshold.Value * _eStepSize;

                        if (radioButtonRawRectangles.Checked)
                        {
                            detRes.RenderRawRect(eThreshold, graf, labelImageBorder.Bounds);
                        }

                        if (radioButtonMergedRect.Checked)
                        {
                            detRes.RenderMergedRect(eThreshold, graf, labelImageBorder.Bounds);
                        }
                    }

                    if (listBoxDetectedRect.Items.Count > 0)
                    {
                        ScoredRect scoredRect = (ScoredRect)listBoxDetectedRect.SelectedItem;

                        if (scoredRect != null)
                        {
                            labelRectInfo.Text = "Rect #" + listBoxDetectedRect.SelectedIndex + "\r\n" +
                                                 scoredRect.ToString() + "\r\n" +
                                                 "Score: " + scoredRect.Score;

                            scoredRect.Render(graf, labelImageBorder.Bounds, true);

                            labeledImg.Render(graf, scoredRect.Bounds, labelFaceBorder.Bounds);
                            labeledImg.Render(graf, scoredRect.Bounds, labelFaceBorderBig.Bounds);
                        }
                    }
                }

                _fDetectionDirty = false;
            }
        }