public static VisionProcessingParameters FromState(ColorSegmentState state) { VisionProcessingParameters parameters = new VisionProcessingParameters(); foreach (ColorSet set in state.Colors) { ColorSet clone = new ColorSet(); clone.Name = set.Name; clone.Colors = new List <ColorDefinition>(set.Colors); parameters._colors.Add(clone); } parameters._settings = (Settings)state.Settings.Clone(); parameters._colorSetMap = (int[])state.ColorSetMap.Clone(); return(parameters); }
protected override void Start() { if (_state == null) { _state = new ColorSegmentState(); } else { for (int set = 0; set < _state.Colors.Count; set++) { ColorSet colorSet = _state.Colors[set]; for (int index = 0; index < colorSet.Colors.Count; index++) { ColorDefinition color = colorSet.Colors[index]; if (!color.Validate()) { colorSet.Colors.RemoveAt(index); index--; } } if (colorSet.Colors.Count == 0) { _state.Colors.RemoveAt(set); set--; } } _state.UpdateColorSetMap(); _state.ImageSource = null; _state.Processing = false; _state.FrameCount = 0; _state.DroppedFrames = 0; _state.FoundColorAreas = null; } _utilitiesPort = DsspHttpUtilitiesService.Create(Environment); _fwdPort = ServiceForwarder <ColorSegmentOperations>(ServiceInfo.Service); base.Start(); Activate <ITask>( Arbiter.Receive <webcam.UpdateFrame>(true, _webcamNotify, OnWebcamUpdateFrame) ); _webcamPort.Subscribe(_webcamNotify, typeof(webcam.UpdateFrame)); }