void BlobTrackerImageProcessedHandler(bt.ImageProcessed processed) { if (_state.Processing || _state.Shutdown) { return; } _state.Processing = true; SpawnIterator(processed, DoBlobTrackerImageProcessedHandler); }
/// <summary> /// Handles event when image is processed by the blob tracker. /// </summary> /// <param name="imageProcessed"></param> #region CODECLIP 02-3 void OnImageProcessed(blob.ImageProcessed imageProcessed) { if (_followMe) { if (imageProcessed.Body.Results.Count == 1) { if (imageProcessed.Body.Results[0].Area > 100) //object detected { _drivePort.SetDrivePower(0.5, 0.5); } else //search object { _drivePort.SetDrivePower(-0.3, 0.3); } } } }
IEnumerator <ITask> DoBlobTrackerImageProcessedHandler(bt.ImageProcessed processed) { try { Fault fault = null; FormInvoke setTracking = new FormInvoke( delegate { if (!_form.IsDisposed) { _form.Tracking = processed.Body.Results; } } ); WinFormsServicePort.Post(setTracking); yield return(Arbiter.Choice( setTracking.ResultPort, delegate(EmptyValue success) { }, delegate(Exception e) { fault = Fault.FromException(e); } )); if (fault != null) { LogError(null, "Unable to set tracking information", fault); yield break; } } finally { _mainPort.Post(new UpdateProcessing(false)); } }