protected override void Dispose(bool disposing) { if (!_disposed) { if (_child != null) { _child.Dispose(); _child = null; } _disposed = true; } base.Dispose(disposing); }
public void SettingTools() { bool local = true; //changes this to false if you want to connect to a runtime service //remote capabilities are only available with advanced licenses string remoteServerAddress = "http://*****:*****@"C:\Users\jkhong\Pictures\ZZZZ\", "*.*", SearchOption.AllDirectories).Where(s => ext.Any(e => s.EndsWith(e))); foreach (var file in myImagesFiles) { using (var image = new FormsImage(file)) { stream.Database.AddImage(image, Path.GetFileName(file)); } } //---------------BLUE TOOL---------------------- //modifying the ROI IManualRegionOfInterest blueROI = blue.RegionOfInterest as IManualRegionOfInterest; //gets the region of interest //changing the angle blueROI.Angle = 10.0; //processes all images in order to apply the ROI blue.Database.Process(); //waiting fo the end of the processing blue.Wait(); //get the first view in the database var firstView = blue.Database.List().First(); //add some features to the first view in the database blue.Database.AddFeature(firstView, "0", new ViDi2.Point(firstView.Size.Width / 2, firstView.Size.Height / 2), 0.0, 1.0); blue.Database.AddFeature(firstView, "1", new ViDi2.Point(firstView.Size.Width / 3, firstView.Size.Height / 3), 0.0, 1.0); //adding a model to the blue tool var model = blue.Models.Add("model1") as INodeModel; //adding some nodes in the model var node = model.Nodes.Add(); node.Fielding = new List <string> { "1" }; node.Position = new ViDi2.Point(0.0, 0.0); node = model.Nodes.Add(); node.Fielding = new List <string> { "0" }; node.Position = new ViDi2.Point(1.0, 0.0); //changing some parameters blue.Parameters.FeatureSize = new ViDi2.Size(30, 30); //saving the workspace workspace.Save(); //trains and wait for the training to be finished blue.Train(); try { while (!blue.Wait(1000)) { System.Console.WriteLine(blue.Progress.Description + " " + blue.Progress.ETA.ToString()); } } catch (ViDi2.Exception e) { /* you'll likely get a "numeric instability detected" exception * that will put you right here. That happens because the resources * that are being used from the "images" folder are probably not * well suited for the specific stream that we have set up. */ System.Console.WriteLine(e.Message); return; } var blueSummary = blue.Database.Summary(); //---------------RED TOOL---------------------- //setting the roi in the red tool. It is a IBlueRegionOfInterest because the red tool is linked to a blue tool var redRoi = red.RegionOfInterest as IBlueRegionOfInterest; //selecting the model used for the ROI redRoi.MatchFilter = "name='" + model.Name + "'"; //setting the size of the ROI redRoi.Size = new ViDi2.Size(100, 100); //applying the ROI on all images red.Database.Process(); //waiting for red tool to finish applying ROI red.Wait(); //changing the rotation perturbation parameter red.Parameters.Rotation = new System.Collections.Generic.List <Interval>() { new Interval(0.0, 360.0) }; //labellling images red.Database.LabelViews("'bad'", "bad"); //label good images red.Database.LabelViews("not 'bad'", ""); // label bad images workspace.Save(); //training the workspace red.Train(); try { while (!red.Wait(1000)) { System.Console.WriteLine(red.Progress.Description + " " + red.Progress.ETA.ToString()); } } catch (ViDi2.Exception e) { System.Console.WriteLine(e.Message); } var redSummary = red.Database.Summary(); //---------------GREEN TOOL---------------------- //Applying the ROI to the green tool green.Database.Process(); red.Wait(); //tagging the images green.Database.Tag("'bad'", "b"); green.Database.Tag("not 'bad'", "g"); workspace.Save(); green.Train(); try { while (!green.Wait(1000)) { System.Console.WriteLine(green.Progress.Description + " " + green.Progress.ETA.ToString()); } } catch (ViDi2.Exception e) { System.Console.WriteLine(e.Message); } var greenSummary = green.Database.Summary(); //closing the workspaces foreach (var w in control.Workspaces) { w.Close(); } control.Dispose(); }