public void Verify_Scanner_GlobalCoordinatesOfIdentifiedTargets() { var snapperImage = new SnapperImageArray("test", snapperImageArray); var targetImages = new List <ITargetImage>() { new TargetImageArray("targetA", targetA, ' '), new TargetImageArray("targetB", targetB, ' '), }; var scanner = new SnapperSolver(snapperImage, targetImages, 0.7); List <Scan> identifiedTargets = scanner.GetListOfScans(); var expected = new List <Coordinate>() { new Coordinate(0.5, 0.5), new Coordinate(6.5, 0.5), new Coordinate(3.5, 4.5), }; var actual = new List <Coordinate>(); foreach (Scan scan in identifiedTargets) { actual.Add(scan.CentroidGlobalCoordinates); } Assert.AreEqual(expected, actual); }
public void Verify_Scanner_NumberOfIdentifiedTargetA(double minimumPrecision, int numberOfTargets) { var snapperImage = new SnapperImageArray("test", snapperImageArray); var targetImageList = new List <ITargetImage>() { new TargetImageArray("targetA", targetA, ' '), new TargetImageArray("targetB", targetB, ' '), }; var snapperSolver = new SnapperSolver(snapperImage, targetImageList, minimumPrecision); int expected = numberOfTargets; int actual = snapperSolver.GetListOfScans().Where(scan => scan.TargetImage.Name == "targetA").ToList().Count; Assert.AreEqual(expected, actual); }
static void Main(string[] args) { //1. Configure services container and inject the concrete dependencies. ConfigureServices(); //2. Using boilerplate stackoverflow code to echo the console to a dumpfile for record purposes - use new C# 8 using statement. using var cc = new EchoConsoleToTextFile(snapperConsoleDumpFilePath); //3. Show introductory message Logger.WriteLine(@"***********************************************"); Logger.WriteLine(@"* WELCOME TO THE SNAPPER ANALYSIS SYSTEM (SAS)*"); Logger.WriteLine(@"***********************************************"); Logger.WriteLine(@"Version: 1.1"); Logger.WriteLine(""); Logger.WriteLine(@"Developed by: Peter Cox"); Logger.WriteLine(@"Brief by: Bruno Martins"); Logger.WriteLine(@"Source code from: https://github.com/EurocodeHelpers"); Logger.WriteBlankLine(); Logger.WriteLine("==============================================="); Logger.WriteLine(""); //4. Set options. Logger.WriteLine($"***Setting Options***", true); Logger.WriteBlankLine(); double minimumConfidenceInTargetPrecision = Settings.MinimumConfidenceInTargetDetection; double minimumConfidenceInTargetPrecision_AsAPercentage = 100 * Math.Round(minimumConfidenceInTargetPrecision, 2); Logger.WriteLine($"Minimum precision of analysis set to {minimumConfidenceInTargetPrecision_AsAPercentage}%."); Logger.WriteBlankLine(); Logger.WriteLine($"***Options Set.***", true); Logger.WriteBlankLine(); Logger.WriteLine("==============================================="); Logger.WriteBlankLine(); //5. Load the snapper image we will scan for targets. There must be exactly one .blf file in the ScannerImage directory which we will scan. Logger.WriteLine("***Loading Snapper Image****", true); Services.SnapperImage.PrintSnapperImageInformation(Logger); Logger.WriteLine("***Snapper Image successfully loaded.***", true); Logger.WriteBlankLine(); Logger.WriteLine("==============================================="); Logger.WriteBlankLine(); //6. Loading the target images we will scan the snapper image for. Logger.WriteLine("***Loading Targets****", true); foreach (ITargetImage t in TargetImages) { t.PrintTargetInformation(Logger); Logger.WriteBlankLine(); } Logger.WriteLine("***Target images successfully loaded.***", true); Logger.WriteBlankLine(); Logger.WriteLine("==============================================="); Logger.WriteBlankLine(); //7. Echo to console that we are now scanning for targets... Logger.WriteBlankLine(); Logger.WriteLine("Now scanning for targets....", true); Logger.WriteBlankLine(); Logger.WriteLine("Scanning complete.", true); Logger.WriteBlankLine(); //8. Scan for each target... SnapperSolver snapperSolver = new SnapperSolver(Services.SnapperImage, Services.TargetImages, minimumConfidenceInTargetPrecision); //9. Write output to console. snapperSolver.SummariseAnalysis(Logger, false); //10. Write to output file. snapperSolver.SummariseAnalysis(Output, true); //11. Terminate program. Logger.WriteLine("Analysis complete.", true); Logger.ReadLine(); }