Sfoglia il codice sorgente

finger direction is determined by multiple slice.lengths now, not only first+last

Alexander Hendrich 10 anni fa
parent
commit
ae7bfee3c5
1 ha cambiato i file con 25 aggiunte e 1 eliminazioni
  1. 25 1
      bbiwarg/Recognition/FingerRecognition/FingerDetector.cs

+ 25 - 1
bbiwarg/Recognition/FingerRecognition/FingerDetector.cs

@@ -226,8 +226,32 @@ namespace bbiwarg.Recognition.FingerRecognition
         
         private FingerSliceTrail orderTrailTipToHand(FingerSliceTrail trail)
         {
+            int numSlices = trail.NumSlices;
+            int numSlices_2 = numSlices/2;
+            int numAbove = 0;
+            int numBelow = 0;
+            float sumAbove = 0;
+            float sumBelow = 0;
+            for (int i = 0; i < numSlices; i++) {
+                float length = trail[i].Length;
+                if (i < numSlices_2)
+                {
+                    numBelow++;
+                    sumBelow += length;
+                }
+                else {
+                    numAbove++;
+                    sumAbove += length;
+                }
+            }
+
+            float avergaeAbove = sumAbove / numAbove;
+            float averageBelow = sumBelow / numBelow;
+
+            Console.WriteLine(averageBelow + "\t" + avergaeAbove);
+
             //check direction
-            if (trail.StartSlice.Length > trail.EndSlice.Length)
+            if (avergaeAbove < averageBelow)
                 trail.reverse();
 
             return trail;