Kinect桥接Matlab代码简介KinectBridge With Matlab

19 篇文章 106 订阅 ¥39.90 ¥99.00
292 篇文章 18 订阅
本文介绍了如何使用C++将Kinect与Matlab结合,通过KinectBridgeWithMATLABBasics-D2D项目在64位环境下配置和解决编译问题。详细步骤包括设置MATLAB_DIR环境变量、修改解决方案平台为x64,以及解决libmx.lib和libmx.dll的问题。程序运行后,可以将SDK获取的图像传递给Matlab进行处理,实现混合编程,但该示例未包含骨骼跟踪功能。
摘要由CSDN通过智能技术生成

Kinect桥接Matlab代码简介KinectBridge With Matlab

                                                Kinect Bridge With MATLAB & OpenCV简介文档和项目下载

驱动版本:Kinect for Windows SDK v1.7

项目名称:KinectBridgeWithMATLABBasics-D2D

编程语言:C++

环境配置

       同样在文件夹下有一个“KinectBridgeWithMATLABBasics-D2D.doc”文档告诉我们如何进行环境配置。有二种设置环境变量的方法,我这里选择第二种做演示。

       开始--->右键我的电脑--->属性--->高级-->环境变量-->新建一个“系统变量”-->增加个一MATLAB_DIR的环境变量,存放matlab安装地址。这个地址下,可以看到extern文件夹,否则是错误的。


       设置完毕后,注销(或者重启)后才能生效。

       由于我的电脑是64bit的,直接进行编译后出现错误提示:

1>  LINK :fatal error LNK1181: 无法打开输入文件“libmx.lib”

我们需要把解决方案平台,改成x64才行。

 

除了这样,我们(x64电脑的)还可以从别人x32电脑拷贝matlab下的extern文件夹进行配置即可。如下图,我把从x32电脑上拷贝的文件夹改成extern32,然后重新配置下环境,编译成功!【不建议这样做,下面发现会运行失败】

 

发现丢失libmx.dll,复制到路径下(x32和x64不一样的,请根据情况复制过来,后来发现都可以运行,不用在意)运行,发现运行失败,具体则是m_matlabEngine = engOpen(NULL);失败,经过百度,发现解决方法http://zhidao.baidu.com/question/148040156.html,需要先进行matlab组件注册才可以,注册方法如图(其实就一句语句,但要在合适的地方输入):


       注册成功后出现matlab命令行,咱们关掉它。这里我尝试了自己的x64编译x32环境再运行的话,是无法成功的打开matlab引擎的,只能使用x64才行。所以这里要正对自己的pc进行配置和运行为佳。[发现libmx.dll可以混用,不管是win32还是win64文件夹下的]

 

程序运行和简要解读

最终运行结果图:


       看了下程序,和之前的OpenCV十分相似,它运行的流程也一样:使用SDK获取的图像传到Matlab的mxArray数组结构中,再调用MatlabEvalExpr(执行字符串语句)对它进行各种操作。

例子:

    const char* c_erodeElementExpr = "filtered_img= imerode(img, se);";

    hr = MatlabEvalExpr(c_erodeElementExpr);

 

       也就是使用了matlab的混合编程,只是使用matlab中的函数或者是方法,但主要上层编码工作还是要需要C++完成。如果您已经有很好的matlab算法代码,只是想看看Kinect数据运行会有什么结果,那么使用这种混合编程方法运行算法,可以得到需要的结果。目前它这个c++例子中,骨骼跟踪也没加入(这么核心的功能啊),可以考虑自己加入此功能。

       还有想要说的是,这个仅仅是新的例子,如果会混合编程,一年多前就可以写出相似或者更好的例子了。

 

数据存放到matlab的mxArray结构可以看函数:

HRESULTMatlabFrameHelper::GetColorData(mxArray* pImage) const

HRESULTMatlabFrameHelper::GetDepthData(mxArray* pImage) const

如果以前写过matlab混合编程,一定对这些函数(mx开头的函数)不陌生。


 

matlab引擎

http://www.cnblogs.com/jiajinwen/archive/2012/04/13/2257644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值