private void btnGenerate_Click(object sender, EventArgs e) { foreach (var item in state.Run) { var action = new GameImageMatchAction(); action.SplitName = item.Name; action.Type = GameImageMatchActionType.SplitOnMatch; var currentDirectory = System.IO.Directory.GetCurrentDirectory(); var sourceImagePath = System.IO.Path.Combine(currentDirectory, JsonBasedActionRepositoryProvider.RepositoriesFolder, this.state.Run.GameName, item.Name + ".png"); var splitComparisonImage = new SplitComparisonImage(sourceImagePath); action.ComparisonImages.Add(splitComparisonImage); this.actionList.Items.Add(Map(action)); repo.Store(action); } }
public float GetMatchPercent(IMaskedGameImage gameImage, SplitComparisonImage splitImage) { try { if (gameImage.Image == null || splitImage.SourceImage == null) { return(0); } //var difference = new Difference(splitImage.SourceImage); //var imageDiff = difference.Apply(gameImage.Frame); //var final = imageDiff; var image1 = gameImage.Image; var image2 = splitImage.SourceImage; ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0); // compare two images TemplateMatch[] matchings = tm.ProcessImage(image1, image2); if (matchings.Length == 0) { return(0); } //// check similarity level //if (matchings[0].Similarity > 0.97f) //{ // image1.Save("c:\\debug_image2.png", ImageFormat.Png); // // do something with quite similar images //} return(matchings[0].Similarity); } catch { return(0); } }
public bool IsMatch(IMaskedGameImage gameImage, SplitComparisonImage splitImage, float minPercent) { return(GetMatchPercent(gameImage, splitImage) >= minPercent); }