C#调用matlab编译的dll进行图像处理出现莫名其妙错误,全都指向.m文件中的imread(),求高手解惑。

半道出家的博士 2017-09-06 06:57:57
1.想要实现的功能是调用matlab编译的dll去处理工业相机拍的图像然后返回计算值到winform里,点一下按钮就计算一次,C#代码如下红色部分为报错,报错为图片所示,最后边是matlab的代码
2.为了试验,我用matlab就写了一个很小的程序实现一个很简单的功能:把图像二值化然后计算值为1的像素点数,就这么个简单,根据报错所提示.m文件的第五行是imread();,也就是matlab中读取图片的这个语句。
3.这个错误并不是每次都发生,点几次之后会偶然发生,有的时候还会出现其他错误,包括“读取colormap错误”,“图像头文件什么什么的”,各种明奇妙的错误,每次都是指向我的matlab的.m文件中读取图片那一行(就是imread()这句话)
4.请问高手们,这可能是C#这出的问题还是matlab出的问题??另外如何才能有效解决??我猜可能是调用matlab读取图像文件的时候工业相机提供的sdk代码还在占用图片引起冲突???

C#代码出错部分:
private void button2_Click(object sender, EventArgs e)
{
MWArray MW_cl1, MW_cl2;
string str_tmpfra, str_tmpvel;

//调用工业相机sdk给出的保存图像方法
bnSaveBmp_Click(sender, e);

//实例化两个函数,调用matlab_dll
Class1 c1 = new Class1();
Class2 c2 = new Class2();
MW_cl1 = c1.CalcPixel_1(tb_Dir.Text + @"\im1.bmp");
str_tmpfra = Convert.ToString(MW_cl1);
label27.Text = str_tmpfra;

MW_cl2 = c2.CalcPixel_2(tb_Dir.Text + @"\im2.bmp");
str_tmpvel = Convert.ToString(MW_cl2);
label28.Text = str_tmpvel;
}





matlab代码:
function y=CalcPixel_2(dir)
A=imread(dir);
BW=im2bw(A,0.3);
y=sum(sum(BW>0));
end
...全文
241 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧