コード例 #1
0
 public WrapperStructPose(PoseMode poseMode,
                          Point <int> netInputSize,
                          Point <int> outputSize,
                          ScaleMode keyPointScale,
                          int gpuNumber,
                          int gpuNumberStart,
                          int scalesNumber,
                          float scaleGap,
                          RenderMode renderMode,
                          PoseModel poseModel,
                          bool blendOriginalFrame,
                          float alphaKeyPoint,
                          float alphaHeatMap,
                          int defaultPartToRender) :
     this(poseMode,
          netInputSize,
          outputSize,
          keyPointScale,
          gpuNumber,
          gpuNumberStart,
          scalesNumber,
          scaleGap,
          renderMode,
          poseModel,
          blendOriginalFrame,
          alphaKeyPoint,
          alphaHeatMap,
          defaultPartToRender,
          "models/")
 {
 }
コード例 #2
0
 public WrapperStructPose(PoseMode poseMode,
                          Point <int> netInputSize,
                          Point <int> outputSize,
                          ScaleMode keyPointScale,
                          int gpuNumber,
                          int gpuNumberStart,
                          int scalesNumber,
                          float scaleGap,
                          RenderMode renderMode,
                          PoseModel poseModel,
                          bool blendOriginalFrame,
                          float alphaKeyPoint,
                          float alphaHeatMap,
                          int defaultPartToRender,
                          string modelFolder,
                          IEnumerable <HeatMapType> heatMapTypes) :
     this(poseMode,
          netInputSize,
          outputSize,
          keyPointScale,
          gpuNumber,
          gpuNumberStart,
          scalesNumber,
          scaleGap,
          renderMode,
          poseModel,
          blendOriginalFrame,
          alphaKeyPoint,
          alphaHeatMap,
          defaultPartToRender,
          modelFolder,
          heatMapTypes,
          ScaleMode.ZeroToOne)
 {
 }
コード例 #3
0
        // Pose parameter configuration (with default value)
        // Please refer to OpenPose documentation for parameter explanation
        public static void OPConfigurePose(
            PoseMode poseMode           = PoseMode.Enabled, Vector2Int?netInputSize = null, Vector2Int?outputSize = null,
            ScaleMode keypointScaleMode = ScaleMode.InputResolution,
            int gpuNumber            = -1, int gpuNumberStart = 0, int scalesNumber = 1, float scaleGap = 0.25f,
            RenderMode renderMode    = RenderMode.Auto, PoseModel poseModel = PoseModel.BODY_25,
            bool blendOriginalFrame  = true, float alphaKeypoint            = 0.6f, float alphaHeatMap = 0.7f,
            int defaultPartToRender  = 0, string modelFolder = null,
            HeatMapType heatMapTypes = HeatMapType.None, ScaleMode heatMapScaleMode = ScaleMode.ZeroToOne,
            bool addPartCandidates   = false, float renderThreshold = 0.05f, int numberPeopleMax = -1,
            bool maximizePositives   = false, double fpsMax         = -1.0,
            string protoTxtPath      = "", string caffeModelPath    = "", float upsamplingRatio = 0f)
        {
            // Other default values
            Vector2Int _netRes    = netInputSize ?? new Vector2Int(-1, 368);
            Vector2Int _outputRes = outputSize ?? new Vector2Int(-1, -1);

            modelFolder = modelFolder ?? Environment.CurrentDirectory + "/models/";

            Bind._OPConfigurePose(
                (byte)poseMode, _netRes.x, _netRes.y, // Point
                _outputRes.x, _outputRes.y,           // Point
                (byte)keypointScaleMode,              // ScaleMode
                gpuNumber, gpuNumberStart, scalesNumber, scaleGap,
                (byte)renderMode,                     // RenderMode
                (byte)poseModel,                      // PoseModel
                blendOriginalFrame, alphaKeypoint, alphaHeatMap, defaultPartToRender, modelFolder,
                Convert.ToBoolean(heatMapTypes & HeatMapType.Parts),
                Convert.ToBoolean(heatMapTypes & HeatMapType.Background),
                Convert.ToBoolean(heatMapTypes & HeatMapType.PAFs), // vector<HeatMapType>
                (byte)heatMapScaleMode,                             // ScaleMode
                addPartCandidates, renderThreshold, numberPeopleMax,
                maximizePositives, fpsMax, protoTxtPath, caffeModelPath, upsamplingRatio
                );
        }
コード例 #4
0
        public static uint[] GetPoseMapIndex(PoseModel poseModel)
        {
            var ret = NativeMethods.op_getPoseMapIndex(poseModel);

            using (var vector = new StdVector <uint>(ret))
                return(vector.ToArray());
        }
コード例 #5
0
 public static extern IntPtr op_wrapperStructPose_new(PoseMode poseMode,
                                                      IntPtr netInputSize,
                                                      IntPtr outputSize,
                                                      ScaleMode keypointScale,
                                                      int gpuNumber,
                                                      int gpuNumberStart,
                                                      int scalesNumber,
                                                      float scaleGap,
                                                      RenderMode renderMode,
                                                      PoseModel poseModel,
                                                      bool blendOriginalFrame,
                                                      float alphaKeypoint,
                                                      float alphaHeatMap,
                                                      int defaultPartToRender,
                                                      byte[] modelFolder,
                                                      IntPtr heatMapTypes,
                                                      ScaleMode heatMapScale,
                                                      bool addPartCandidates,
                                                      float renderThreshold,
                                                      int numberPeopleMax,
                                                      bool maximizePositives,
                                                      double fpsMax,
                                                      byte[] protoTxtPath,
                                                      byte[] caffeModelPath,
                                                      float upsamplingRatio,
                                                      bool enableGoogleLogging);
コード例 #6
0
        public static uint[] GetPosePartPairs(PoseModel poseModel)
        {
            var ret = Native.op_getPosePartPairs(poseModel);

            using (var vector = new StdVector <uint>(ret))
                return(vector.ToArray());
        }
コード例 #7
0
 public static extern IntPtr op_PoseGpuRenderer_new(PoseModel poseModel,
                                                    IntPtr poseExtractorNet,
                                                    float renderThreshold,
                                                    bool blendOriginalFrame,
                                                    float alphaKeyPoint,
                                                    float alphaHeatMap,
                                                    uint elementToRender);
コード例 #8
0
        public PoseExtractorCaffe(PoseModel poseModel,
                                  string modelFolder,
                                  int gpuId,
                                  HeatMapType[] heatMapTypes = null,
                                  ScaleMode heatMapScale     = ScaleMode.ZeroToOne,
                                  bool addPartCandidates     = false,
                                  bool maximizePositives     = false,
                                  bool enableGoogleLogging   = true)
        {
            if (!Directory.Exists(modelFolder))
            {
                throw new DirectoryNotFoundException($"{modelFolder} is not found.");
            }

            var modelFolderBytes = Encoding.UTF8.GetBytes(modelFolder);

            using (var types = new StdVector <HeatMapType>(heatMapTypes ?? new HeatMapType[0]))
                this.NativePtr = PoseExtractorCaffeNative.op_PoseExtractorCaffe_new(poseModel,
                                                                                    modelFolderBytes,
                                                                                    gpuId,
                                                                                    types.NativePtr,
                                                                                    heatMapScale,
                                                                                    addPartCandidates,
                                                                                    maximizePositives,
                                                                                    enableGoogleLogging);
        }
コード例 #9
0
 public WrapperStructPose(PoseMode poseMode,
                          Point <int> netInputSize,
                          Point <int> outputSize,
                          ScaleMode keyPointScale,
                          int gpuNumber,
                          int gpuNumberStart,
                          int scalesNumber,
                          float scaleGap,
                          RenderMode renderMode,
                          PoseModel poseModel,
                          bool blendOriginalFrame,
                          float alphaKeyPoint) :
     this(poseMode,
          netInputSize,
          outputSize,
          keyPointScale,
          gpuNumber,
          gpuNumberStart,
          scalesNumber,
          scaleGap,
          renderMode,
          poseModel,
          blendOriginalFrame,
          alphaKeyPoint,
          OpenPose.PoseDefaultAlphaKeyPoint)
 {
 }
コード例 #10
0
        public async static Task <bool> WithinCuboid(
            [InputPin(PropertyMode = PropertyMode.Never)] PoseModel source,
            [InputPin(PropertyMode = PropertyMode.Default, Editor = "Pose")] PoseProperty center,
            [InputPin(PropertyMode = PropertyMode.Default)] double width  = 0.1,
            [InputPin(PropertyMode = PropertyMode.Default)] double height = 0.1,
            [InputPin(PropertyMode = PropertyMode.Default)] double depth  = 0.1,
            CancellationToken cancel = default(CancellationToken))
        {
            if (center == null)
            {
                throw new ArgumentNullException(nameof(center), "Required property 'center' of CheckCurrentPose module was not specified.");
            }

            if (source == null)
            {
                throw new ArgumentNullException(nameof(source), "Required property 'source' of CheckCurrentPose module was not specified.");
            }

            var centerPose = await ResolveProperty(center);

            var currentPose = source.ToPose();

            var dist = Vector3.Abs(Vector3.Subtract(centerPose.Translation, currentPose.Translation));

            return(dist.X < width && dist.Y < height && dist.Z < depth);
        }
コード例 #11
0
 public static extern IntPtr op_PoseExtractorCaffe_new(PoseModel poseModel,
                                                       byte[] modelFolder,
                                                       int gpuId,
                                                       IntPtr heatMapTypes,
                                                       ScaleMode heatMapScale,
                                                       bool addPartCandidates,
                                                       bool maximizePositives,
                                                       bool enableGoogleLogging);
コード例 #12
0
    private void OnDataCollectionStop()
    {
        isCollectingData = false;

        PoseModel model = new PoseModel(rotations);

        model.SaveModel("output.txt");
        timerText.text = "Todo fué correcto";
    }
コード例 #13
0
        public WrapperStructPose(bool enable = false,
                                 Point <int> netInputSize = default(Point <int>),
                                 Point <int> outputSize   = default(Point <int>),
                                 ScaleMode keyPointScale  = ScaleMode.InputResolution,
                                 int gpuNumber            = -1,
                                 int gpuNumberStart       = 0,
                                 int scalesNumber         = 1,
                                 float scaleGap           = 0.15f,
                                 RenderMode renderMode    = RenderMode.Gpu,
                                 PoseModel poseModel      = PoseModel.Body25,
                                 bool blendOriginalFrame  = true,
                                 float alphaKeyPoint      = OpenPose.PoseDefaultAlphaKeyPoint,
                                 float alphaHeatMap       = OpenPose.PoseDefaultAlphaKeyPoint,
                                 int defaultPartToRender  = 0,
                                 string modelFolder       = "models/",
                                 IEnumerable <HeatMapType> heatMapTypes = null,
                                 ScaleMode heatMapScale   = ScaleMode.ZeroToOne,
                                 bool addPartCandidates   = false,
                                 float renderThreshold    = 0.05f,
                                 int numberPeopleMax      = -1,
                                 bool maximizePositives   = false,
                                 double fpsMax            = -1d,
                                 bool enableGoogleLogging = true)
        {
            var modelFolderBytes = Encoding.UTF8.GetBytes(modelFolder ?? "");

            using (var nativeNetInputSize = netInputSize.ToNative())
                using (var nativeOutputSize = outputSize.ToNative())
                    using (var vector = new StdVector <HeatMapType>(heatMapTypes ?? new HeatMapType[0]))
                        this.NativePtr = Native.op_wrapperStructPose_new(enable,
                                                                         nativeNetInputSize.NativePtr,
                                                                         nativeOutputSize.NativePtr,
                                                                         keyPointScale,
                                                                         gpuNumber,
                                                                         gpuNumberStart,
                                                                         scalesNumber,
                                                                         scaleGap,
                                                                         renderMode,
                                                                         poseModel,
                                                                         blendOriginalFrame,
                                                                         alphaKeyPoint,
                                                                         alphaHeatMap,
                                                                         defaultPartToRender,
                                                                         modelFolderBytes,
                                                                         vector.NativePtr,
                                                                         heatMapScale,
                                                                         addPartCandidates,
                                                                         renderThreshold,
                                                                         numberPeopleMax,
                                                                         maximizePositives,
                                                                         fpsMax,
                                                                         enableGoogleLogging);
        }
コード例 #14
0
 public WrapperStructPose(PoseMode poseMode,
                          Point <int> netInputSize,
                          Point <int> outputSize,
                          ScaleMode keyPointScale,
                          int gpuNumber,
                          int gpuNumberStart,
                          int scalesNumber,
                          float scaleGap,
                          RenderMode renderMode,
                          PoseModel poseModel,
                          bool blendOriginalFrame,
                          float alphaKeyPoint,
                          float alphaHeatMap,
                          int defaultPartToRender,
                          string modelFolder,
                          IEnumerable <HeatMapType> heatMapTypes,
                          ScaleMode heatMapScale,
                          bool addPartCandidates,
                          float renderThreshold,
                          int numberPeopleMax,
                          bool maximizePositives,
                          double fpsMax,
                          string prototxtPath,
                          string caffeModelPath,
                          float upsamplingRatio) :
     this(poseMode,
          netInputSize,
          outputSize,
          keyPointScale,
          gpuNumber,
          gpuNumberStart,
          scalesNumber,
          scaleGap,
          renderMode,
          poseModel,
          blendOriginalFrame,
          alphaKeyPoint,
          alphaHeatMap,
          defaultPartToRender,
          modelFolder,
          heatMapTypes,
          heatMapScale,
          addPartCandidates,
          renderThreshold,
          numberPeopleMax,
          maximizePositives,
          fpsMax,
          prototxtPath,
          caffeModelPath,
          upsamplingRatio,
          true)
 {
 }
コード例 #15
0
        public static string GetPoseTrainedModel(PoseModel poseModel)
        {
            string str = null;

            var ret = Native.op_getPoseTrainedModel(poseModel);

            if (ret != IntPtr.Zero)
            {
                str = StringHelper.FromStdString(ret, true);
            }

            return(str);
        }
コード例 #16
0
        public static string GetPoseProtoTxt(PoseModel poseModel)
        {
            string str = null;

            var ret = NativeMethods.op_getPoseProtoTxt(poseModel);

            if (ret != IntPtr.Zero)
            {
                str = StringHelper.FromStdString(ret, true);
            }

            return(str);
        }
コード例 #17
0
 public PoseCpuRenderer(PoseModel poseModel,
                        float renderThreshold,
                        bool blendOriginalFrame = true,
                        float alphaKeyPoint     = OpenPose.PoseDefaultAlphaKeyPoint,
                        float alphaHeatMap      = OpenPose.PoseDefaultAlphaHeatMap,
                        uint elementToRender    = 0u)
 {
     this.NativePtr = NativeMethods.op_PoseCpuRenderer_new(poseModel,
                                                           renderThreshold,
                                                           blendOriginalFrame,
                                                           alphaKeyPoint,
                                                           alphaHeatMap,
                                                           elementToRender);
 }
コード例 #18
0
 public PoseGpuRenderer(PoseModel poseModel,
                        StdSharedPtr <PoseExtractorCaffe> poseExtractorNet,
                        float renderThreshold,
                        bool blendOriginalFrame = true,
                        float alphaKeyPoint     = OpenPose.PoseDefaultAlphaKeyPoint,
                        float alphaHeatMap      = OpenPose.PoseDefaultAlphaHeatMap,
                        uint elementToRender    = 0u)
 {
     this.NativePtr = NativeMethods.op_PoseGpuRenderer_new(poseModel,
                                                           poseExtractorNet.NativePtr,
                                                           renderThreshold,
                                                           blendOriginalFrame,
                                                           alphaKeyPoint,
                                                           alphaHeatMap,
                                                           elementToRender);
 }
コード例 #19
0
    void Start()
    {
        Application.targetFrameRate = 30;
        Screen.SetResolution(1280, 720, true);

        NuitrackManager.GestureRecognizer.OnNewGesturesEvent += AttendGestures;

        gestureModels = new PoseModel[1];

        BetterStreamingAssets.Initialize();

        gestureModels[0] = new PoseModel();
        gestureModels[0].LoadModel(modelPaths[0]);

        gestureModel.Add(CustomGestureType.HandsUp, gestureModels[0]);
    }
コード例 #20
0
 public WrapperStructPose(PoseMode poseMode,
                          Point <int> netInputSize,
                          Point <int> outputSize,
                          ScaleMode keyPointScale,
                          int gpuNumber,
                          int gpuNumberStart,
                          int scalesNumber,
                          float scaleGap,
                          RenderMode renderMode,
                          PoseModel poseModel,
                          bool blendOriginalFrame,
                          float alphaKeyPoint,
                          float alphaHeatMap,
                          int defaultPartToRender,
                          string modelFolder,
                          IEnumerable <HeatMapType> heatMapTypes,
                          ScaleMode heatMapScale,
                          bool addPartCandidates,
                          float renderThreshold,
                          int numberPeopleMax) :
     this(poseMode,
          netInputSize,
          outputSize,
          keyPointScale,
          gpuNumber,
          gpuNumberStart,
          scalesNumber,
          scaleGap,
          renderMode,
          poseModel,
          blendOriginalFrame,
          alphaKeyPoint,
          alphaHeatMap,
          defaultPartToRender,
          modelFolder,
          heatMapTypes,
          heatMapScale,
          addPartCandidates,
          renderThreshold,
          numberPeopleMax,
          false)
 {
 }
コード例 #21
0
 public static Pose ToPose(this PoseModel model, bool normalizeRotation = false)
 {
     if (model.Translation == null || model.Rotation == null)
     {
         return(new Pose(
                    new Vector3(float.NaN, float.NaN, float.NaN),
                    new Quaternion(float.NaN, float.NaN, float.NaN, float.NaN),
                    model.Frame
                    ));
     }
     else
     {
         return(new Pose(
                    new Vector3((float)model.Translation[0], (float)model.Translation[1], (float)model.Translation[2]),
                    new Quaternion((float)model.Rotation[0], (float)model.Rotation[1], (float)model.Rotation[2], (float)model.Rotation[3]),
                    model.Frame,
                    normalizeRotation
                    ));
     }
 }
コード例 #22
0
 public WrapperStructPose(PoseMode poseMode,
                          Point <int> netInputSize,
                          Point <int> outputSize,
                          ScaleMode keyPointScale,
                          int gpuNumber,
                          int gpuNumberStart,
                          int scalesNumber,
                          float scaleGap,
                          RenderMode renderMode,
                          PoseModel poseModel) :
     this(poseMode,
          netInputSize,
          outputSize,
          keyPointScale,
          gpuNumber,
          gpuNumberStart,
          scalesNumber,
          scaleGap,
          renderMode,
          poseModel,
          true)
 {
 }
コード例 #23
0
    public double Compare(PoseModel other)
    {
        NDtw.Dtw dtw;

        double[][] firstSeries;
        double[][] secondSeries;
        double     error = 0;

        char[] components = { 'x', 'y', 'z', 'w' };

        foreach (char component in components)
        {
            firstSeries  = GetAllComponents(component);
            secondSeries = other.GetAllComponents(component);

            for (int i = 0; i < numberOfJoints; i++)
            {
                dtw    = new NDtw.Dtw(firstSeries[i], secondSeries[i]);
                error += dtw.GetCost();
            }
        }

        return(error);
    }
コード例 #24
0
 public static extern IntPtr op_getPosePartPairs(PoseModel poseModel);
コード例 #25
0
 public static extern uint op_getPoseNumberBodyParts(PoseModel poseModel);
コード例 #26
0
 public static extern IntPtr op_getPoseMapIndex(PoseModel poseModel);
コード例 #27
0
 public static extern IntPtr op_getPoseProtoTxt(PoseModel poseModel);
コード例 #28
0
 public static extern bool op_addBkgChannel(PoseModel poseModel);
コード例 #29
0
 public static extern float op_getPoseDefaultConnectInterThreshold(PoseModel poseModel, bool maximizePositives);
コード例 #30
0
 public static extern float op_getPoseNetDecreaseFactor(PoseModel poseModel);