TouchEvent.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using bbiwarg.Recognition.FingerRecognition;
  7. using bbiwarg.Recognition.Tracking;
  8. using bbiwarg.Utility;
  9. using Emgu.CV;
  10. using Emgu.CV.Structure;
  11. namespace bbiwarg.Recognition.TouchRecognition
  12. {
  13. class TouchEvent : TrackableObject
  14. {
  15. public Vector2D Position { get; private set; }
  16. public Vector2D RelativePalmPosition { get; private set; }
  17. public Image<Gray, byte> TouchMask { get; private set; }
  18. public Finger Finger { get; private set; }
  19. public Quadrangle PalmQuad { get; private set; }
  20. public TouchEvent(Vector2D absolutePosition, Image<Gray, byte> touchMask, Finger finger, Quadrangle palmQuad)
  21. {
  22. Position = absolutePosition;
  23. RelativePalmPosition = palmQuad.getRelativePosition(absolutePosition);
  24. TouchMask = touchMask;
  25. Finger = finger;
  26. PalmQuad = palmQuad;
  27. }
  28. public float getTouchValue()
  29. {
  30. int touchPixels = TouchMask.CountNonzero()[0];
  31. int numPixels = TouchMask.Width * TouchMask.Height;
  32. float touchValue = touchPixels / (float)numPixels;
  33. return touchValue;
  34. }
  35. }
  36. }