private async Task<object> CreateTrackingHandler(dynamic input) { Logger("Start Image Tracking"); trackingHandlerCallback = (Func<object, Task<object>>)input.callback; if (trackingHandlerCallback == null) { throw new Exception("no callback function is provided"); } IPcMoment moment = await PcLink.CaptureMomentAsync(); // Extract the top-level picture and child images. var picture = await PcLink.ExtractPictureAsync(moment); // Extract the top-level outline and child outlines. var outline = await PcLink.ExtractOutlineAsync(moment); //var combolist = new List<TrackingHandlerDataObject>(); List<PcTrainingImage> images = new List<PcTrainingImage>(); Logger(picture.Children.Count().ToString()); for (int i = 0; i < picture.Children.Count(); i++) { PcTrainingImage trainingImage = new PcTrainingImage("Object " + i, picture.Children.ElementAt(i).Image); images.Add(trainingImage); } // Create the object-tracking handler. trackingHandler = PcLink.CreateObjectTrackingHandler(images); // Subscribe to object-tracking events. trackingHandler.TrackUpdated += _imagesTrackHandler_TrackUpdated; Logger("Before start"); // Start object tracking. trackingHandler.StartAsync().Wait(); Logger("After start"); return true; }
private async Task<object> StopImageTracking() { Logger("Stopping Image Tracking"); if (trackingHandler != null) { await trackingHandler.StopAsync(); trackingHandler.TrackUpdated -= _imagesTrackHandler_TrackUpdated; trackingHandler.Dispose(); trackingHandler = null; return true; } else { throw new Exception("Tracking was not started."); } }
private async Task<object> StartTracking(dynamic input) { trackingHandlerCallback = (Func<object, Task<object>>)input.callback; if (trackingHandlerCallback == null) { throw new Exception("no callback function is provided"); } trackingHandler = PcLink.CreateObjectTrackingHandler(trainingImages); // Subscribe to object-tracking events. trackingHandler.TrackUpdated += _imagesTrackHandler_TrackUpdated; Logger("Before start"); // Start object tracking. trackingHandler.StartAsync().Wait(); Logger("After start"); return true; }