|
@@ -34,9 +34,8 @@ namespace bbiwarg.Recognition.HandRecognition
|
|
|
createModifiedHandEdgeImage();
|
|
|
findHands();
|
|
|
fixOverlappingFingers();
|
|
|
- setZIndexes();
|
|
|
- createHandMask();
|
|
|
findThumbDefects();
|
|
|
+ createHandMask();
|
|
|
}
|
|
|
|
|
|
private void createModifiedHandEdgeImage()
|
|
@@ -46,8 +45,8 @@ namespace bbiwarg.Recognition.HandRecognition
|
|
|
foreach (Finger finger in fingers)
|
|
|
{
|
|
|
Int16 depthAtHand = depthImage.getDepthAt(finger.HandPoint);
|
|
|
- Point[] contour = finger.InnerContour.ToArray();
|
|
|
- modifiedHandDepthImage.DrawPolyline(contour, false, new Gray(depthAtHand), 2);
|
|
|
+ Point[] contour = finger.Contour.ToArray();
|
|
|
+ modifiedHandDepthImage.DrawPolyline(contour, false, new Gray(depthAtHand), 1);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -87,19 +86,10 @@ namespace bbiwarg.Recognition.HandRecognition
|
|
|
{
|
|
|
Image<Gray, byte> mask = new Image<Gray, byte>(Parameters.ImageWidth + 2, Parameters.ImageHeight + 2);
|
|
|
MCvConnectedComp comp = new MCvConnectedComp();
|
|
|
- CvInvoke.cvFloodFill(modifiedHandDepthImage, p, new MCvScalar(255), new MCvScalar(Parameters.HandFloodFillDownDiff), new MCvScalar(Parameters.HandFloodFillUpDiff), out comp, Emgu.CV.CvEnum.CONNECTIVITY.EIGHT_CONNECTED, Emgu.CV.CvEnum.FLOODFILL_FLAG.DEFAULT, mask);
|
|
|
+ CvInvoke.cvFloodFill(modifiedHandDepthImage, p, new MCvScalar(255), new MCvScalar(Parameters.HandFloodFillDownDiff), new MCvScalar(Parameters.HandFloodFillUpDiff), out comp, Emgu.CV.CvEnum.CONNECTIVITY.FOUR_CONNECTED, Emgu.CV.CvEnum.FLOODFILL_FLAG.DEFAULT, mask);
|
|
|
return mask.Copy(new Rectangle(1, 1, Parameters.ImageWidth, Parameters.ImageHeight));
|
|
|
}
|
|
|
|
|
|
- private void setZIndexes()
|
|
|
- {
|
|
|
- //sort depending on depth of centroid (far->near)
|
|
|
- Hands.Sort((h1, h2) => depthImage.getDepthAt(h2.CentroidInHand).CompareTo(depthImage.getDepthAt(h1.CentroidInHand)));
|
|
|
-
|
|
|
- for (int i = 0; i < Hands.Count; i++)
|
|
|
- Hands[i].setZIndex(i);
|
|
|
- }
|
|
|
-
|
|
|
private void fixOverlappingFingers()
|
|
|
{
|
|
|
extendOrMergeThroughOverlappingFingers();
|