public async Task ScoreFrame(VideoFrame videoFrame) { if (!_isModelLoadedSuccessfully || videoFrame == null) { return; } try { using (SoftwareBitmap bitmapBuffer = new SoftwareBitmap(BitmapPixelFormat.Bgra8, _customVisionONNXModel.InputImageWidth, _customVisionONNXModel.InputImageHeight, BitmapAlphaMode.Ignore)) { using (VideoFrame buffer = VideoFrame.CreateWithSoftwareBitmap(bitmapBuffer)) { await videoFrame.CopyToAsync(buffer); var input = new CustomVisionModelInput() { data = buffer }; // Perform prediction using ONNX model DateTime start = DateTime.Now; CustomVisionModelOutput output = await this._customVisionONNXModel.EvaluateAsync(input); await ShowPredictionResults(output, Math.Round((DateTime.Now - start).TotalMilliseconds)); } } } catch (Exception ex) { this._isModelLoadedSuccessfully = false; await UpdateStatus("Error", $"Failure scoring camera frame: {ex.Message}"); } }
public async Task ProcessFrame(VideoFrame videoFrame, Canvas visualizationCanvas) { if (!isModelLoadedSuccessfully) { return; } try { using (SoftwareBitmap bitmapBuffer = new SoftwareBitmap(BitmapPixelFormat.Bgra8, CustomVisionModelInputSize, CustomVisionModelInputSize, BitmapAlphaMode.Ignore)) { using (VideoFrame buffer = VideoFrame.CreateWithSoftwareBitmap(bitmapBuffer)) { await videoFrame.CopyToAsync(buffer); var input = new CustomVisionModelInput() { data = buffer }; DateTime start = DateTime.Now; // Prediction process with ONNX model CustomVisionModelOutput output = await this.customVisionModel.EvaluateAsync(input); DateTime end = DateTime.Now; await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { ShowResults(output); double predictionTimeInMilliseconds = (end - start).TotalMilliseconds; this.fpsTextBlock.Text = predictionTimeInMilliseconds > 0 ? $"{Math.Round(1000 / predictionTimeInMilliseconds)} fps" : string.Empty; }); } } } catch (Exception ex) { this.isModelLoadedSuccessfully = false; await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { ResetState(); await Util.GenericApiCallExceptionHandler(ex, "Failure processing frame"); }); } }
public async Task ProcessFrame(VideoFrame videoFrame, Canvas visualizationCanvas) { if (customVisionONNXModel == null || videoFrame == null) { return; } try { using (SoftwareBitmap bitmapBuffer = new SoftwareBitmap(BitmapPixelFormat.Bgra8, customVisionONNXModel.InputImageWidth, customVisionONNXModel.InputImageHeight, BitmapAlphaMode.Ignore)) { using (VideoFrame buffer = VideoFrame.CreateWithSoftwareBitmap(bitmapBuffer)) { await videoFrame.CopyToAsync(buffer); var input = new CustomVisionModelInput() { data = buffer }; DateTime start = DateTime.Now; // Prediction process with ONNX model CustomVisionModelOutput output = await this.customVisionONNXModel.EvaluateAsync(input); await ShowPredictionResults(output, Math.Round((DateTime.Now - start).TotalMilliseconds)); } } } catch (Exception ex) { await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { if (SettingsHelper.Instance.ShowDebugInfo) { await Util.GenericApiCallExceptionHandler(ex, "Failure processing frame"); } }); } }