【问题标题】:Imread method in Xamarin Forms project can't find my imageXamarin Forms 项目中的 Imread 方法找不到我的图像
【发布时间】:2019-04-30 16:22:11
【问题描述】:

我正在尝试在我的应用中使用否定图像。 图片在android项目的drawable文件夹中。

我试过只使用图像的名称,就像图像 xaml 一样:

<Image x:Name="img"
                Source="thanos.jpg" />

c#:

Mat image = CvInvoke.Imread("thanos.jpg", ImreadModes.AnyColor);

但我得到了例外:System.ArgumentException : File thanos.jpg do not exist

我尝试在路径中添加drawable、资源、/、\,但仍然是同样的错误。

有什么想法吗?

【问题讨论】:

  • 存储在 drawable 中的图像是资源,而不是文件。 Imread() 需要一个文件路径。要么您需要找到一种可用于资源或流的替代方法,要么您需要将图像从资源复制到文件
  • 所以我在资源中的图像>drawable 不再是文件了?我应该怎么把它变成一个文件?
  • 从资源中读取字节并作为文件写入文件系统
  • 好的,谢谢。我会试试这个。
  • 你有这个问题的更新吗?

标签: c# android xamarin.forms emgucv


【解决方案1】:

此解决方案仅适用于 android atm。

首先,添加android路径private const string pathAndroid = "/storage/emulated/0/Android/data/com.companyname.**YourAppName**/files",因为System.Environment.GetFolderPath(System.Environment.SpecialFolder.**WhateverYouChooseThere**)链接到其他文件夹。

那么Imread确实需要一个文件,所以我直接在手机中添加了文件(我的app已经包含了图片),并结合了路径和文件名:

var pathfile = Path.Combine(pathAndroid + "/hello.JPG"); //whatever your file name

最终,我可以与 Imread 合作:

Mat img = CvInvoke.Imread(pathfile);
CvInvoke.CvtColor(img, img, ColorConversion.Rgb2Gray);
CvInvoke.Imwrite(pathAndroid + "/result.JPG", img); //save the image

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多