Esempio n. 1
0
        async void Start()
        {
            sequence  = GetComponent <ITextureSequence>();
            converter = GetComponent <ITextureConverter>();
            detector  = GetComponent <IDetectService>();
            consumer  = HandConsumer.GetComponent <IHandListConsumer>();

            // start a logic loop
            IEnumerable <HandData> hands = null;

            foreach (Task <Texture> request in sequence.Repeat())
            {
                if (request == null)
                {
                    continue;
                }

                var texture = await request;
                var image   = await converter.Convert(texture);

                var translator = await detector.Detect(ref image);

                hands = translator.Fetch <HandData>(hands);
                if (hands != null)
                {
                    consumer.Consume(ref image, hands);
                }

                //release holding resources for detection
                translator.Dispose();
            }
        }
Esempio n. 2
0
        async void Start()
        {
            sequence  = GetComponent <ITextureSequence>();
            converter = GetComponent <ITextureConverter>();

            var detectors = GetComponents <IDetectService>();

            Debug.Log("Number of Detectors: " + detectors.Length);
            faceService = detectors[0];
            handService = detectors[1];

            faceConsumer = FaceConsumer.GetComponent <IFaceListConsumer>();
            handConsumer = HandConsumer.GetComponent <IHandListConsumer>();

            // start a logic loop
            IEnumerable <FaceData> faces = null;
            IEnumerable <HandData> hands = null;

            foreach (Task <Texture> request in sequence.Repeat())
            {
                if (request == null)
                {
                    continue;
                }

                var texture = await request;

                var image = await converter.Convert(texture);

                var faceTranslator = await faceService.Detect(ref image);

                faces = faceTranslator.Fetch <FaceData>(faces);
                if (faces != null)
                {
                    faceConsumer.Consume(ref image, faces);
                }
                //release holding resources for detection
                faceTranslator.Dispose();

                image = await converter.Convert(texture);

                var handTranslator = await handService.Detect(ref image);

                hands = handTranslator.Fetch <HandData>(hands);
                if (faces != null)
                {
                    handConsumer.Consume(ref image, hands);
                }
                //release holding resources for detection
                handTranslator.Dispose();
            }
        }