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(); } }
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; } }