Ejemplo n.º 1
0
        public IEnumerator <ITask> OnProcessFrame(ProcessFrame processFrame)
        {
            if (_state.ImageSource == null)
            {
                yield return(Arbiter.Choice(
                                 _webcamPort.DsspDefaultLookup(),
                                 delegate(LookupResponse response)
                {
                    _state.ImageSource = response.HttpServiceAlias;
                },
                                 EmptyHandler
                                 ));
            }

            if (processFrame.Body.Process)
            {
                if (_state.Processing)
                {
                    _state.DroppedFrames++;
                }
                else if (_state.Colors.Count > 0)
                {
                    _state.Processing = true;
                    _state.FrameCount++;

                    SpawnIterator(VisionProcessingParameters.FromState(_state), DoVisionProcessing);
                }
                else
                {
                    _state.SegmentedImage = null;
                }
            }
            else
            {
                _state.Processing = false;
            }

            processFrame.ResponsePort.Post(DefaultUpdateResponseType.Instance);

            SendNotification(_submgrPort, processFrame, Filter.Internal.ToString());

            yield break;
        }