如何在 Xamarin Forms 中打开图像并将其与 Emgu Cv/OpenCvSharp 一起使用?

Posted

技术标签:

【中文标题】如何在 Xamarin Forms 中打开图像并将其与 Emgu Cv/OpenCvSharp 一起使用?【英文标题】:How to open an image and use it with EmguCv/OpenCvSharp in Xamarin Forsm? 【发布时间】:2021-02-26 12:55:19 【问题描述】:

我正在使用 Xamarin Forms 开发应用程序,我需要处理图像,但我无法使用 OpenCvSharp 或 EmguCv。

当我尝试打开发送路径的图片时,它不起作用并崩溃:

这是我的代码:

var file = await CrossMedia.Current.PickPhotoAsync(new PickMediaOptions
            
                CompressionQuality = 100,
                PhotoSize = PhotoSize.Large
            );    
Mat OriginalImage = new Mat(file.Path, ImreadModes.AnyColor);

当我运行我的应用程序时,它不起作用。

你知道任何解决方案或任何教程吗?

【问题讨论】:

什么异常导致崩溃? System.TypeInitializationException Message=“OpenCvSharp.NativeMethods”的类型初始化程序引发了异常。 是否有 InnerException? 我怎么能看到内部异常? 异常对象有一个 InnerException 属性 【参考方案1】:

我对OpenCvSharp不是很熟悉,但是如果你想在Emgucv中做,你可以使用下面的代码。

//Create a string to hold the file location
string fileLocation;

//Create an openfiledialog object to select a photo
OpenFileDialog dialog = new OpenFileDialog

    InitialDirectory = Directory.GetParent(Directory.GetParent
        (Environment.CurrentDirectory).ToString()).ToString(),
    Title = "Browse Images",

    CheckFileExists = true,
    CheckPathExists = true,

    FilterIndex = 2,
    RestoreDirectory = true,

    ReadOnlyChecked = true,
    ShowReadOnly = true
;

if (dialog.ShowDialog() == true)

    fileLocation = dialog.FileName;

    Mat input = CvInvoke.Imread(fileLocation, ImreadModes.AnyColor);


【讨论】:

以上是关于如何在 Xamarin Forms 中打开图像并将其与 Emgu Cv/OpenCvSharp 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms:获取存储在共享项目中的图像文件的路径?

如何调整 xamarin.forms 中的图像大小?

如何调整 xamarin.forms 中的图像大小?

在 Xamarin.Forms 中获取图像或 ImageSource 的字节 [] / 流?

如何在我的 Xamarin.Forms 应用程序的 UWP 版本中显示图像

Xamarin.Forms 将文件 (pdf) 保存在本地存储中并使用默认查看器打开