Exemple #1
0
 public override IObservable <Rect[]> Process(IObservable <IplImage> source)
 {
     return(Observable.Defer(() =>
     {
         var storage = new MemStorage();
         var cascade = HaarClassifierCascade.Load(FileName);
         return source.Select(input =>
         {
             var offset = Offset;
             var objects = cascade.DetectObjects(input, storage, ScaleFactor, MinNeighbors, Flags, MinSize, MaxSize);
             var result = new Rect[objects.Count];
             objects.CopyTo(result);
             storage.Clear();
             for (int i = 0; i < result.Length; i++)
             {
                 result[i].X += offset.X;
                 result[i].Y += offset.Y;
             }
             return result;
         }).Finally(() =>
         {
             cascade.Dispose();
             storage.Dispose();
         });
     }));
 }
Exemple #2
0
        public static void DetectFace(Capture capture)
        {
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "data", "haarcascades_cuda", "haarcascade_frontalface_alt.xml");

            var cascade = HaarClassifierCascade.Load(path);
            var storage = new MemStorage();
            var size    = new Size(40, 40);


            using (var window = new NamedWindow("test"))
            {
                while (CV.WaitKey(1) < 0)
                {
                    using (var image = capture.QueryFrame())
                    {
                        if (image == null)
                        {
                            break;
                        }

                        var faces = cascade.DetectObjects(image, storage, 1.1, 3, 0, size);

                        foreach (var rect in faces.ToArray <Rect>())
                        {
                            CV.Rectangle(image, new Point(rect.X, rect.Y), new Point(rect.X + rect.Width, rect.Y + rect.Height), new Scalar(255, 0, 0), 1, LineFlags.Connected8, 0);
                            window.ShowImage(image);
                        }
                    }
                }
            }
        }
Exemple #3
0
 internal static extern Seq cvHaarDetectObjects(
     Arr image,
     HaarClassifierCascade cascade,
     MemStorage storage,
     double scale_factor,
     int min_neighbors,
     HaarDetectObjectFlags flags,
     Size min_size,
     Size max_size);
Exemple #4
0
 private void InitClassifiers(ClassifierType classifierType, System.IO.DirectoryInfo classifierDir)
 {
     string faceClassifierFileName = GetFileNameFromClassifierType(classifierType);
     string eyesClassifierFileName = GetFileNameFromClassifierType(ClassifierType.Eyes);
     managedHaarFace = HaarClassifierCascade.Parse(XDocument.Load(faceClassifierFileName));
     managedHaarEyes = HaarClassifierCascade.Parse(XDocument.Load(eyesClassifierFileName));
     unmanagedHaarFace = new HaarCascade(faceClassifierFileName);
     unmanagedHaarEyes = new HaarCascade(eyesClassifierFileName);
 }