|
@@ -30,7 +30,6 @@ namespace bbiwarg.Detectors.Palm
|
|
|
|
|
|
private Contour<Point> palmContour;
|
|
private Contour<Point> palmContour;
|
|
private List<MCvConvexityDefect> convexityDefects;
|
|
private List<MCvConvexityDefect> convexityDefects;
|
|
- private Vector2D wristPoint, wristDirection;
|
|
|
|
private LineSegment2DF wristLine, thumbLine;
|
|
private LineSegment2DF wristLine, thumbLine;
|
|
private Quad2D palmRect;
|
|
private Quad2D palmRect;
|
|
|
|
|
|
@@ -40,7 +39,7 @@ namespace bbiwarg.Detectors.Palm
|
|
private Vector2D bottomLeft;
|
|
private Vector2D bottomLeft;
|
|
private Vector2D bottomRight;
|
|
private Vector2D bottomRight;
|
|
|
|
|
|
- public PalmDetector(DepthImage depthImage, EdgeImage edgeImage, FingerDetector fingerDetector, PalmImage palmImage)
|
|
|
|
|
|
+ public PalmDetector(DepthImage depthImage, EdgeImage edgeImage, List<Finger> detectedFingers, PalmImage palmImage)
|
|
{
|
|
{
|
|
width = depthImage.getWidth();
|
|
width = depthImage.getWidth();
|
|
height = depthImage.getHeight();
|
|
height = depthImage.getHeight();
|
|
@@ -50,7 +49,7 @@ namespace bbiwarg.Detectors.Palm
|
|
|
|
|
|
handImage = depthImage.getImage().Convert<Byte>(delegate(short s) { return (s == depthImage.getMaxDepth()) ? (byte)0 : (byte)1; });
|
|
handImage = depthImage.getImage().Convert<Byte>(delegate(short s) { return (s == depthImage.getMaxDepth()) ? (byte)0 : (byte)1; });
|
|
|
|
|
|
- fingers = getFingersWithoutThumb(fingerDetector);
|
|
|
|
|
|
+ fingers = getFingersWithoutThumb(detectedFingers);
|
|
buildPointingHandMask();
|
|
buildPointingHandMask();
|
|
handImage = handImage.And(pointingHandMask);
|
|
handImage = handImage.And(pointingHandMask);
|
|
|
|
|
|
@@ -77,9 +76,8 @@ namespace bbiwarg.Detectors.Palm
|
|
return new PalmRect(palmRect);
|
|
return new PalmRect(palmRect);
|
|
}
|
|
}
|
|
|
|
|
|
- private List<Finger> getFingersWithoutThumb(FingerDetector fingerDetector)
|
|
|
|
|
|
+ private List<Finger> getFingersWithoutThumb(List<Finger> detectedFingers)
|
|
{
|
|
{
|
|
- List<Finger> detectedFingers = fingerDetector.Fingers;
|
|
|
|
Finger leftMost = null;
|
|
Finger leftMost = null;
|
|
float minX = float.MaxValue;
|
|
float minX = float.MaxValue;
|
|
foreach (Finger f in detectedFingers)
|
|
foreach (Finger f in detectedFingers)
|