Jelajahi Sumber

fixed touchDetection

Alexander Hendrich 11 tahun lalu
induk
melakukan
7fdb2acf3e

+ 2 - 3
bbiwarg/Detectors/TouchDetection/TouchDetector.cs

@@ -31,7 +31,6 @@ namespace bbiwarg.Detectors.TouchDetection
             foreach (Finger finger in fingers)
             {
                 Vector2D tipPoint = finger.TipPoint;
-
                 outputImage.fillCircle(tipPoint.IntX, tipPoint.IntY, 3, Constants.TouchEventTipColor);
 
                 float floodValue = getFloodValue(tipPoint);
@@ -61,7 +60,7 @@ namespace bbiwarg.Detectors.TouchDetection
             Image<Gray, byte> touchArea = depthImage.Image.Copy(rect);
 
             MCvConnectedComp comp = new MCvConnectedComp();
-            CvInvoke.cvFloodFill(touchArea, relTouch, new MCvScalar(255), new MCvScalar(0), new MCvScalar(1), out comp, Emgu.CV.CvEnum.CONNECTIVITY.EIGHT_CONNECTED, Emgu.CV.CvEnum.FLOODFILL_FLAG.DEFAULT, IntPtr.Zero);
+            CvInvoke.cvFloodFill(touchArea, relTouch, new MCvScalar(255), new MCvScalar(0), new MCvScalar(2), out comp, Emgu.CV.CvEnum.CONNECTIVITY.EIGHT_CONNECTED, Emgu.CV.CvEnum.FLOODFILL_FLAG.DEFAULT, IntPtr.Zero);
 
             int matchedPixels = 0;
             int countedPixels = 0;
@@ -81,7 +80,7 @@ namespace bbiwarg.Detectors.TouchDetection
                     {
                         subtractColor = Constants.TouchEventAreaNonMatchedSubtractColor;
                     }
-                    Color newColor = Color.FromArgb(Math.Max(color.R - subtractColor.R, 0), Math.Max(color.G - subtractColor.G, 0), Math.Max(color.B - subtractColor.B, 0));
+                    Color newColor = subtractColor;//Color.FromArgb(Math.Max(color.R - subtractColor.R, 0), Math.Max(color.G - subtractColor.G, 0), Math.Max(color.B - subtractColor.B, 0));
                     outputImage.drawPixel(x, y, newColor);
                     countedPixels++;
                 }

+ 2 - 2
bbiwarg/VideoHandle.cs

@@ -172,8 +172,8 @@ namespace bbiwarg
 
             //remove background noise
             Timer.start("removeBackground");
-            depthImage.removeBackground(handDetector.Hands);
-            edgeImage = new EdgeImage(depthImage);
+            //depthImage.removeBackground(handDetector.Hands);
+            //edgeImage = new EdgeImage(depthImage);
             OutputImages[3].Image[0] = OutputImages[3].Image[1] = OutputImages[3].Image[2] = (depthImage.MaxDepth - depthImage.MinDepth) - depthImage.Image;
             Timer.stop("removeBackground");