123456789101112131415161718192021222324252627282930313233343536373839 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using MathNet.Numerics.LinearAlgebra.Single;
- namespace bbiwarg.DataSource
- {
- class PalmDetection
- {
- private IInputProvider input;
- private IVideoHandle videoHandle;
- private ForeFingerDetection foreFingerDetection;
- public PalmDetection(IInputProvider input, IVideoHandle videoHandle)
- {
- this.input = input;
- this.videoHandle = videoHandle;
- this.foreFingerDetection = new ForeFingerDetection(input, videoHandle);
- }
- public Palm getPalm(uint handIndex)
- {
- DenseVector palmMiddle = (DenseVector) input.getPalmPosition3D(handIndex);
- DenseVector thumbPosition = (DenseVector) input.getFingerTipPositions3D(handIndex)[0];
- DenseVector foreFingerPosition = (DenseVector)foreFingerDetection.getForeFingerPosition3D(handIndex);
- DenseVector palmToThumb_2 = (thumbPosition - palmMiddle) / 2.0f;
- DenseVector palmToForeFinger = foreFingerPosition - palmMiddle;
- return new Palm(palmMiddle + palmToThumb_2 + palmToForeFinger,
- palmMiddle - palmToThumb_2 + palmToForeFinger,
- palmMiddle - palmToThumb_2 - palmToForeFinger / 2.0f,
- palmMiddle + palmToThumb_2 - palmToForeFinger / 2.0f);
- }
- }
- }
|