matlab与c#进行混合编程,matlab生成dll文件以供c#调用,图像参数在传递的过程中出现问题,有的图片有返回值,有的图片没有返回值,想请问为什么会出现这种情况,该如何修改,谢谢您的评论和指导
**c#端代码 **
Image a =pictureBox1.Image;
Bitmap bit_original = new Bitmap(a);
int height = bit_original.Height;
int width = bit_original.Width;
int[, ,] rgb = new int[3, height, width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
rgb[0, i, j] = bit_original.GetPixel(j, i).R;
rgb[1, i, j] = bit_original.GetPixel(j, i).G;
rgb[2, i, j] = bit_original.GetPixel(j, i).B;
}
}
MWNumericArray matrix = new MWNumericArray(rgb);
Class1 text = new brenner.Class1();
Class2 te = new bt.Class2();
MWArray result = te.brenner(matrix);
label1.Text = result.ToString();
matlab端方法
function outval = brenner(img)
% OUTVAL = EDGE_INTENSITY(IMG)
%img=imread(dir);
if nargin == 1
img=rgb2gray(img);
img = double(img);
% Create horizontal sobel matrix
[M,N]=size(img);
FI=9999;
for x=1:M-2
for y=1:N
FI=FI+(img(x+2,y)-img(x,y))*(img(x+2,y)-img(x,y));
end
end
outval = FI;
else
error('Wrong number of input!');
end
运行结果
正确运行结果,有返回值
错误运行结果,返回值为9999
所有测试图片都可以在matlab下用该函数正确运行,不知道为什么c#下就运行的乱七八糟,或者说还有别的方法可以用于c#与matlab之间进行图片参数的传递吗