在xamarin中调用.net库

时间:2017-11-22 16:06:02

标签: c# .net xamarin.android

我已经从MATLAB创建了一个.net程序集文件,并在c#windows和c#web应用程序中使用它并且工作正常。现在我想在xamarin中使用这个汇编文件,但是我收到了错误。 C#代码也应该在xamarin中工作。不是吗?

在Windows中,当我试图获取图像的r,g和b通道时,它的工作正常,但是当我试图在xamarin中做同样的事情时,它给出了一个错误。 Windows代码如下:

int i, j;
Bitmap image = (Bitmap)pictureBox1.Image;
int width = image.Width;
int height = image.Height;
Bitmap processed_image = new Bitmap(width, height);
try
{
    byte[,,] rgb = new byte[3, height, width];
    for (i = 0; i < height; i++)
    {
        for (j = 0; j < width; j++)
        {
            rgb[0, i, j] = image.GetPixel(j, i).R;
            rgb[1, i, j] = image.GetPixel(j, i).G;
            rgb[2, i, j] = image.GetPixel(j, i).B;
        }
    }
    MWNumericArray narr = new MWNumericArray();
    narr = rgb;

    Salt obj = new Salt();
    MWArray u = obj.classification(narr);
    label1.Text = u.ToString();
   // MessageBox.Show(u.ToString());

}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());

}

和xamarin代码如下:

int i, j;
Bitmap image = bitmapimage;// bitmapimage the image (either taken from gallery or captured using camera)

int width = image.Width;
int height = image.Height;
byte[,,] rgb = new byte[3, height, width];

for (i = 0; i < height; i++)
{ 
    for (j = 0; j < width; j++)
    {
        rgb[0, i, j] = image.GetPixel(j, i).R;
        rgb[1, i, j] = image.GetPixel(j, i).G;
        rgb[2, i, j] = image.GetPixel(j, i).B;
    }
}

MWNumericArray narr = new MWNumericArray();
narr = rgb;

Salt obj = new Salt();
MWArray u = obj.classification(narr);
textview.SetText(u);

我在获取R,G和B频道时遇到错误。

&#39; INT&#39;不包含&#39; R&#39;的定义没有推广方法&#39; R&#39;接受类型&#39; int&#39;的第一个参数可以找到(你错过了使用指令或程序集引用吗?)

请帮我解决这个错误。真的很棒。 感谢。

1 个答案:

答案 0 :(得分:1)

在我看来,您正在使用Android.Graphics.Bitmap。此对象的GetPixel方法返回应转换为int的{​​{1}}。将您的代码更改为:

Android.Graphics.Color

另外,作为附注, var color = new Android.Graphics.Color(image.GetPixel(j, i)); rgb[0, i, j] = color.R; rgb[1, i, j] = color.G; rgb[2, i, j] = color.B; 很慢,很慢。我建议使用GetPixel方法处理原始二进制数据。在这里阅读更多内容:

https://developer.xamarin.com/api/member/Android.Graphics.Bitmap.CopyPixelsToBuffer/p/Java.Nio.Buffer/