Ejemplo n.º 1
0
 /// <summary>人脸检测</summary>
 public Bitmap FaceVerify(Bitmap bmpImage)
 {
     try
     {
         using (var currentFrame = new Image <Bgr, Byte>(bmpImage))
         {
             //只能这么转
             invert = new Mat();
             CvInvoke.BitwiseAnd(currentFrame, currentFrame, invert);
             int c = 0;
             _rf     = new RrFaceT();
             _w      = invert.Width; _h = invert.Height;
             _itData = invert.DataPointer;
             var    lp = new IntPtr();
             IntPtr it = FaceverifyDll.rr_fd_detect(_ip, _itData, RrImageType.RR_IMAGE_BGR8UC3, _w, _h, ref lp, ref c);
             if (it.ToInt32() != 0)
             {
                 return(bmpImage);
             }
             if (c > 0)
             {
                 _rf    = (RrFaceT)Marshal.PtrToStructure(lp, typeof(RrFaceT));
                 Rrface = _rf;
             }
             FaceverifyDll.rr_fd_release_detect_result(lp);
         }
     }
     catch (Exception ex)
     {
         ex.ToSaveLog("FaceData.FaceVerify:");
     }
     return(bmpImage);
 }
Ejemplo n.º 2
0
        /// <summary>人脸检测</summary>
        public Bitmap FaceVerify(Mat mat)
        {
            if (mat == null)
            {
                return(null);
            }
            try
            {
                int c = 0;
                _rf     = new RrFaceT();
                _w      = mat.Width; _h = mat.Height;
                _itData = mat.DataPointer;
                var lp = new IntPtr();
                "人脸检测句柄分析".ToSaveLog("FaceVerify:");
                IntPtr it = FaceverifyDll.rr_fd_detect(_ip, _itData, RrImageType.RR_IMAGE_BGR8UC3, _w, _h, ref lp, ref c);
                if (it.ToInt32() == 0)
                {
                    if (c > 0)
                    {
                        _rf    = (RrFaceT)Marshal.PtrToStructure(lp, typeof(RrFaceT));
                        Rrface = _rf;

                        #region 给识别出的所有人脸画矩形框
                        //int with = _rf.rect.right - _rf.rect.left;
                        //int heigth = _rf.rect.bottom - _rf.rect.top;
                        //var face = new Rectangle(_rf.rect.left, _rf.rect.top, with, heigth);
                        //Bitmap bm = FaceFun.DrawRectangleInPicture(mat.Bitmap, face, Color.Red, 2);
                        //"释放人脸检测句柄".ToSaveLog("FaceVerify:");
                        //FaceverifyDll.rr_fd_release_detect_result(lp);
                        //return bm;
                        #endregion
                    }
                    else
                    {
                        return(null);
                    }
                }
                "释放人脸检测句柄.".ToSaveLog("FaceVerify");
                FaceverifyDll.rr_fd_release_detect_result(lp);
            }
            catch (Exception ex)
            {
                ex.ToSaveLog("FaceData.FaceVerify:");
            }
            return(mat.Bitmap);
        }