【问题标题】:aforge image comparison with UWPaforge 与 UWP 的图像比较
【发布时间】:2023-03-04 22:03:01
【问题描述】:

我在 UWP 项目中使用portable.aforge.imaging 进行图像比较。 ProcessImage 方法需要位图类型作为参数。我正在使用 System.Drawing 访问 Bitmap 类,但是当我尝试实例化时出现错误:“Bitmap 不包含采用 1 个参数的构造函数”

UWP 上是否提供常规位图类?如果是,我做错了什么?如果没有,我必须使用 aforge 的 ProcessImage 进行比较吗?

 private void TestAForge()
    {

        ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0);

        Bitmap image, template;

        //fetch Bitmaps

        image = new Bitmap("MyDir/myImage.jpg");
        template = new Bitmap("MyDir/myImage.jpg");

        // compare two images
        TemplateMatch[] matchings = tm.ProcessImage(image, template);
        // check similarity level
        TextBlock.Text = "" + matchings[0].Similarity;
        if (matchings[0].Similarity > 0.95)
        {

            // do something with quite similar images
        }
    }

【问题讨论】:

  • 这个 System.Drawing.Bitmap 不是来自 .NET Framework,而是带有 portable.aforge.imaging(在 Shim.Drawing 中)。查看它的代码,您似乎只能通过 public static explicit operator Bitmap(WriteableBitmap writeableBitmap) 从 WriteableBitmap 进行强制转换来创建实例。或者可能通过Image.FromStream() 创建一个Image 实例并将其转换为位图(不确定是否有效)。

标签: win-universal-app aforge image-comparison


【解决方案1】:

是的,System.Drawing.Bitmap 可以通过 通用 Windows 平台上的 AForgeShim.Drawing 程序集获得。

正如Clemens 建议的那样,您需要从WriteableBitmap 转换为System.Drawing.Bitmap,在Bitmap 上应用AForge 映像操作,最后再转换回来到WriteableBitmap(或BitmapSourceImageSource)。

可以在文件MainPage.xaml.csaccord-samples 存储库中的Corner.SURF.Windows 示例中找到实施此工作流的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2015-11-01
    相关资源
    最近更新 更多