public void GetBoundingBoxes()
        {
            PrepareModel(Model);
            Assert.True(File.Exists(Model), $"Failed to download {ModelUrl}");

            using (var obj = StructuredEdgeDetection.Create(Model))
                using (var image = Image("blob/shapes1.png", ImreadModes.Color))
                    using (var image32F = new Mat())
                        using (var edges = new Mat())
                            using (var orientation = new Mat())
                                using (var edgesNms = new Mat())
                                {
                                    image.ConvertTo(image32F, MatType.CV_32FC3, 1.0 / 255);
                                    obj.DetectEdges(image32F, edges);
                                    obj.ComputeOrientation(edges, orientation);
                                    obj.EdgesNms(edges, orientation, edgesNms);

                                    using (var eb = EdgeBoxes.Create(maxBoxes: 5))
                                    {
                                        eb.GetBoundingBoxes(edgesNms, orientation, out var boxes);
                                        Assert.NotEmpty(boxes);
                                        foreach (var box in boxes)
                                        {
                                            image.Rectangle(box, Scalar.Red, 2);
                                        }
                                        ShowImagesWhenDebugMode(image32F, edges, orientation, edgesNms, image);
                                        //Window.ShowImages(image, edgesNms);
                                    }
                                }
        }
        public void CreateAndDispose1()
        {
            PrepareModel(Model);
            Assert.True(File.Exists(Model), $"Failed to download {ModelUrl}");

            using (var obj = StructuredEdgeDetection.Create(Model))
            {
                GC.KeepAlive(obj);
            }
        }
        public async Task CreateAndDispose2()
        {
            await PrepareModel(Model);

            Assert.True(File.Exists(Model), $"Failed to download {ModelUrl}");

            using (var rf = RFFeatureGetter.Create())
                using (var obj = StructuredEdgeDetection.Create(Model, rf))
                {
                    GC.KeepAlive(obj);
                }
        }
        public void DetectEdges()
        {
            PrepareModel(Model);
            Assert.True(File.Exists(Model), $"Failed to download {ModelUrl}");

            using (var obj = StructuredEdgeDetection.Create(Model))
                using (var image = Image("blob/shapes1.png", ImreadModes.Color))
                    using (var image32F = new Mat())
                        using (var edges = new Mat())
                            using (var orientation = new Mat())
                                using (var edgesNms = new Mat())
                                {
                                    image.ConvertTo(image32F, MatType.CV_32FC3, 1.0 / 255);
                                    obj.DetectEdges(image32F, edges);
                                    obj.ComputeOrientation(edges, orientation);
                                    obj.EdgesNms(edges, orientation, edgesNms);

                                    ShowImagesWhenDebugMode(image32F, edges, orientation, edgesNms);
                                }
        }