internal RectangleScanner(Overlay overlay) { this.overlay = overlay; rectangleRequest = new VNDetectRectanglesRequest(RectanglesDetected); rectangleRequest.MaximumObservations = 10; }
/// <summary> /// Set Initial Condition /// </summary> public void ReadAndDisplayFirstFrame(bool performRectanglesDetection, out NSError error) { var videoReader = VideoReader.Create(this.videoAsset); if (videoReader != null) { var firstFrame = videoReader.NextFrame(); if (firstFrame != null) { List <TrackedPolyRect> firstFrameRects = null; if (performRectanglesDetection) { // Vision Rectangle Detection var imageRequestHandler = new VNImageRequestHandler(firstFrame, videoReader.Orientation, new NSMutableDictionary()); var rectangleDetectionRequest = new VNDetectRectanglesRequest(null) { MinimumAspectRatio = 0.2f, MaximumAspectRatio = 1f, MinimumSize = 0.1f, MaximumObservations = 10 }; imageRequestHandler.Perform(new VNRequest[] { rectangleDetectionRequest }, out NSError performError); if (performError != null) { error = new VisionTrackerProcessorError(VisionTrackerProcessorErrorType.FirstFrameReadFailed); return; } var rectObservations = rectangleDetectionRequest.GetResults <VNRectangleObservation>(); if (rectObservations != null && rectObservations.Any()) { this.initialRectObservations = rectObservations.ToList(); var detectedRects = new List <TrackedPolyRect>(); for (var index = 0; index < this.initialRectObservations.Count; index++) { var rectangleObservation = this.initialRectObservations[index]; var rectColor = TrackedObjectsPalette.Color(index); detectedRects.Add(new TrackedPolyRect(rectangleObservation, rectColor)); } firstFrameRects = detectedRects; } } error = null; this.Delegate?.DisplayFrame(firstFrame, videoReader.AffineTransform, firstFrameRects); } else { error = new VisionTrackerProcessorError(VisionTrackerProcessorErrorType.FirstFrameReadFailed); } } else { error = new VisionTrackerProcessorError(VisionTrackerProcessorErrorType.ReaderInitializationFailed); } }
public override void ViewDidLoad() { base.ViewDidLoad(); // Configure UI CameraButton.Enabled = UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera); GalleryButton.Enabled = UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum); // Setup Vision Rectangles RectangleRequest = new VNDetectRectanglesRequest(HandleRectangles); RectangleRequest.MaximumObservations = 10; // limit on the number of rectangles to look for - can increase "thinking time" }
public override void ViewDidLoad() { base.ViewDidLoad(); // Configure UI CameraButton.Enabled = UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera); GalleryButton.Enabled = UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum); // Load the ML model var bundle = NSBundle.MainBundle; var assetPath = bundle.GetUrlForResource("MNISTClassifier", "mlmodelc"); var mlModel = MLModel.FromUrl(assetPath, out NSError mlErr); var model = VNCoreMLModel.FromMLModel(mlModel, out NSError vnErr); // Initialize RectangleRequest = new VNDetectRectanglesRequest(HandleRectangles); ClassificationRequest = new VNCoreMLRequest(model, HandleClassification); }