加载EMGU自带的xml文件作为检测工具,难在参数的设置和调试
static String face_cascade_name = Application.StartupPath + "\\Cascades\\lbpcascade_frontalface.xml";
static String eyes_cascade_name = Application.StartupPath + "\\Cascades\\haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade = new CascadeClassifier(face_cascade_name);
CascadeClassifier eyes_cascade = new CascadeClassifier(eyes_cascade_name);
private void processfram(object sender, EventArgs arg)
{
Image<Bgr, byte> frame = new Image<Bgr, byte>("I:\\1.jpg").Resize(300, 400, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
Image<Gray, byte> grayF = frame.Convert<Gray, byte>();
//for (int a1 = 0; a1 < 20; a1++)
//{
// for (int b = 0; b < 20; b++)
// {
Rectangle[] faceArr = face_cascade.DetectMultiScale
(grayF, 1.1, 1, Size.Empty, Size.Empty);
Rectangle[] eyeArr = eyes_cascade.DetectMultiScale
(grayF, 1.1, 4, Size.Empty, Size.Empty);
//int falen = faceArr.Length;
//int eyelen = eyeArr.Length;
//if (falen * eyelen > 0)
//{
// Console.WriteLine("A:"+a1+" B:"+b);
// Console.WriteLine("FaceHarr:" + faceArr.Length);
// Console.WriteLine("EyeHaar:" + eyeArr.Length);
//}
foreach (Rectangle detection in faceArr)
{
frame.Draw(detection, new Bgr(Color.Red), 2);
}
//if (eyeArr.Length == 2)
//{
// foreach (Rectangle detection1 in eyeArr)
// {
// frame.Draw(detection1, new Bgr(Color.Blue), 2);
// }
foreach (Rectangle detection in eyeArr)
{
frame.Draw(detection, new Bgr(Color.Blue), 2);
}
Console.WriteLine("FaceHarr:" + faceArr.Length);
Console.WriteLine("EyeHaar:" + eyeArr.Length);
pictureBox1.Image = frame.ToBitmap();
}