1

このコードを使用して目を検出しました:

MCvAvgComp[][] eyes = gray1.DetectHaarCascade(eye, 1.1, 1, 
       Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20));
gray1.ROI = Rectangle.Empty;
foreach (MCvAvgComp eyesnap in eyes[0])
{
    Rectangle eyeRect = eyesnap.rect;
    eyeRect.Offset(f.rect.X, f.rect.Y);
    nextFrame.Draw(eyeRect, new Bgr(Color.Green), 2);
}

別のピクチャーボックスで両目のスナップショットを撮りたいです。個々の目のスナップショットを撮る方法を理解できる人はいますか?

4

1 に答える 1

1

GetSubRect関数を使用して、サブイメージを取得できます。

IImage eyeImg = nextFrame.GetSubRect(eyeRect);

または

Bitmap eyeBmp = nextFrame.GetSubRect(eyeRect).Bitmap;

編集

左目にHaarCascadeをロードします。

HaarCascade leftEye = new HaarCascade("leftEye.xml");

MCvAvgComp[][] foundLeftEyes = gray1.DetectHaarCascade(leftEye, 1.1, 1, 
       Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20));
gray1.ROI = Rectangle.Empty;
foreach (MCvAvgComp eyesnap in foundLeftEyes[0])
{
    Rectangle eyeRect = eyesnap.rect;
    eyeRect.Offset(f.rect.X, f.rect.Y);
    nextFrame.Draw(eyeRect, new Bgr(Color.Green), 2);
}

右目も同じです...

例として、次のものを使用できます。

左目HaarCascade右目HaarCascade

于 2013-01-13T12:30:13.130 に答える