Browse Source

improved finger contour (performance)

Alexander Hendrich 11 years ago
parent
commit
02c205bb79

+ 1 - 4
bbiwarg/Recognition/FingerRecognition/FingerSliceTrail.cs

@@ -81,10 +81,7 @@ namespace bbiwarg.Recognition.FingerRecognition
             pointsA.AddRange(pointsB);
 
             Contour<Point> contour = new Contour<Point>(new MemStorage());
-            foreach (Point p in pointsA)
-            {
-                contour.Push(p);
-            }
+            contour.PushMulti(pointsA.ToArray(), Emgu.CV.CvEnum.BACK_OR_FRONT.FRONT);
             return contour;
         }
 

+ 2 - 2
bbiwarg/Recognition/HandRecognition/Hand.cs

@@ -73,8 +73,8 @@ namespace bbiwarg.Recognition.HandRecognition
                 FingerSliceTrail trail = null;
                 foreach (FingerSlice slice in finger.SliceTrail.Slices)
                 {
-                    Vector2D out1 = slice.Start.moveWithinBound(slice.Direction.getInverse(), Parameters.FingerOutMargin);
-                    Vector2D out2 = slice.End.moveWithinBound(slice.Direction, Parameters.FingerOutMargin);
+                    Vector2D out1 = slice.Start.moveWithinBound(slice.Direction.getInverse(), Parameters.FingerContourMargin);
+                    Vector2D out2 = slice.End.moveWithinBound(slice.Direction, Parameters.FingerContourMargin);
 
                     if (isInside(out1) && isInside(out2))
                     {

+ 1 - 1
bbiwarg/Recognition/HandRecognition/HandDetector.cs

@@ -47,7 +47,7 @@ namespace bbiwarg.Recognition.HandRecognition
             foreach (Finger finger in fingers)
             {
                 Int16 depthAtHand = depthImage.getDepthAt(finger.HandPoint);
-                Point[] contour = finger.getContour(Parameters.FingerContourMargin).ToArray();
+                Point[] contour = finger.getContour(0f).ToArray();
                 modifiedHandDepthImage.DrawPolyline(contour, false, new Gray(depthAtHand), 1);
             }
         }