/// <summary> /// 输出调试信息(仅在开启了<see cref="MatchArgument.ConsoleOutput"/>配置时) /// </summary> /// <param name="argument"></param> /// <param name="message"></param> internal static void OutputDebugMessage(this MatchArgument argument, string message) { if (argument.IsExtensionConfigEnabled(MatchArgument.ConsoleOutput)) { Console.WriteLine("[ConsoleOutput] " + message); } }
/// <summary> /// 预览模版匹配结果(仅在开启了<see cref="MatchArgument.PreviewMatchResult"/>配置时) /// </summary> /// <param name="argument"></param> /// <param name="matchResult"></param> /// <param name="sourceImage"></param> internal static void PreviewDebugTemplateMatchResult(this MatchArgument argument, TemplateMatchResult matchResult, Mat sourceImage) { if (!argument.IsExtensionConfigEnabled(MatchArgument.PreviewMatchResult)) { return; } using var image = new Mat(sourceImage, OpenCvSharp.Range.All); if (matchResult.Success) { foreach (var matchItem in matchResult.MatchItems) { var rectangle = matchItem.Rectangle; Cv2.Rectangle(image, new Point(rectangle.X, rectangle.Y), new Point(rectangle.Right, rectangle.Bottom), Scalar.RandomColor(), 3); } } PreviewMatchResultImage(image); }
/// <summary> /// 预览匹配结果(仅在开启了<see cref="MatchArgument.PreviewMatchResult"/>配置时) /// </summary> /// <param name="argument"></param> /// <param name="matchResult"></param> /// <param name="sourceMat"></param> /// <param name="searchMat"></param> /// <param name="keySourcePoints"></param> /// <param name="keySearchPoints"></param> /// <param name="goodMatches"></param> internal static void PreviewDebugFeatureMatchResult(this MatchArgument argument, FeatureMatchResult matchResult, Mat sourceMat, Mat searchMat, IEnumerable <KeyPoint> keySourcePoints, IEnumerable <KeyPoint> keySearchPoints, IEnumerable <DMatch> goodMatches) { if (!argument.IsExtensionConfigEnabled(MatchArgument.PreviewMatchResult)) { return; } using var image = new Mat(sourceMat, OpenCvSharp.Range.All); if (matchResult.Success) { foreach (var matchItem in matchResult.MatchItems) { var rectangle = matchItem.Rectangle; Cv2.Rectangle(image, new Point(rectangle.X, rectangle.Y), new Point(rectangle.Right, rectangle.Bottom), Scalar.RandomColor(), 3); } } using var imgMatch = new Mat(); Cv2.DrawMatches(image, keySourcePoints, searchMat, keySearchPoints, goodMatches, imgMatch, flags: DrawMatchesFlags.NotDrawSinglePoints); PreviewMatchResultImage(imgMatch); }