2013-01-09 36 views
0

HI Im使用代码进行人脸检测。但不会继续进行脸部识别。但我在这里得到堆栈在哪里,下一步如何。但是,即时通讯使用emgu 2.2版Face Regonition OpenCV 2.2

  if (faces.Length > 0) 
      { 
       foreach (var face in faces) 
       { 
        ImageFrame.Draw(face.rect, new Bgr(Color.Green), 2); 
        //Extract face 
        ExtractedFace = new Bitmap(face.rect.Width, face.rect.Height); 

        FaceConvas = Graphics.FromImage(ExtractedFace); 
        FaceConvas.DrawImage(GrayBmpInput, 0, 0, face.rect, GraphicsUnit.Pixel); 
        ExtcFacesArr[faceNo] = ExtractedFace; 
        faceNo++; 

       } 

       faceNo = 0; 
       picExtcFaces.Image = ExtcFacesArr[faceNo]; 

       CamImageBox.Image = ImageFrame; 
      } 
     } 

我应该在哪里继续与面部识别和C#代码做有什么好的参考网上?

回答

1

您的代码几乎是正确的,但我认为你不必知道该怎么办next.I正在做人脸识别在我的应用程序之一显示在face.I口罩正在做这样的。

Image mask = Image.FromFile("mask.png"); 
public Bitmap getFacedBitmap(Bitmap bbb) 
    { 
     using (Image<Bgr, byte> nextFrame = new Image<Bgr, byte>(bbb)) 
     { 
      if (nextFrame != null) 
      { 
       // there's only one channel (greyscale), hence the zero index 
       //var faces = nextFrame.DetectHaarCascade(haar)[0]; 
       Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>(); 
       //Image<Gray, Byte> gray = nextFrame.Convert<Gray, Byte>(); 

       var faces = grayframe.DetectHaarCascade(haar, 1.3, 2, HAAR_DETECTION_TYPE.SCALE_IMAGE, new Size(nextFrame.Width/8, nextFrame.Height/8))[0]; 
       if (faces.Length > 0) 
       { 
        foreach (var face in faces) 
        { 
         //ImageFrame.Draw(face.rect, new Bgr(Color.Green), 2); 
         //      
         using(Graphics g = Graphics.FromImage(bbb)) 
        { 
         g.DrawImage(mask,face.rect); 
         g.Save() 
        } 
        } 

       } 
      } 
     } 
    retun bbb; 
    } 
+0

嗨,感谢您的帮助..给我一些很好的点击。非常感谢... – user994985