예제 #1
0
 public void CreateAndDispose1()
 {
     using (var eb = EdgeBoxes.Create())
     {
         GC.KeepAlive(eb);
     }
 }
        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);
                                    }
                                }
        }