在上一篇博客中我们介绍了一下如何利用C#调用C++封装的托管代码,这一篇我们介绍一下如何用C#调用MATLAB封装的代码。
MATLAB的程序完成的功能主要是人脸对齐和图像的crop操作,以便后面送给分类器进行人脸属性的预测。本来想着用C++重新实现一次,这样就可以按照上面的C#调用C++的dll方式再做一次。但是呢,无论我采用什么方式出来的结果总是和MATLAB的结果不一样。我训练模型所用的训练数据和测试数据全部用的都是MATLAB得到的结果,因此别无选择了,只能还用MATLAB的程序,然后就想到了用C#调用MATLAB的dll。其实我试过先把MATLAB包装dll让C++调用,再用C#调用C++,但是失败了。。。因为在vs2013的C++程序里调用MATLAB的dll还是要配置很多东西的,包括一些依赖的dll和lib,因此当我把他们包装起来送给C#的时候总是提示缺少依赖的dll,然后我就无奈了,然后我就决定还是用C#直接调用MATLAB吧。事实证明,C#直接调用MATLAB其实更方便。
前面一篇博客提到我的环境是win7 64位+vs2013+MATLAB2015。坑就坑在MATLAB版本太新,网上所有的资料显示的都是MATLAB2012,2010,甚至还有2005!!!他们提到的创建MATLAB的.Net工程,原谅臣妾真的找不到在哪里啊。。。所以后来干脆瞎鼓捣吧。好在凭借着不笨的脑子,搞出来了!
貌似MATLAB一直都是支持创建.Net工程的,就是为了很多人可能会用到跨语言和平台进行调用。而且,不同的语言有不同的优势,虽然MATLAB大多数功能C++可以实现,甚至如果是图像处理相关的操作,opencv