2014-02-09 23 views
0

我正在使用opencv来集成到MATLAB中。我正在使用opencv的Features2D和Nonfree库来运行不同的关键点检测和描述算法。C++ mex不断运行并等待MATLAB输入

经过多次测试后,我注意到BRISK在我的数据表现非常好。问题是类BRISK的构造函数与其他算法相比非常慢。 该行:

BRISK检测器(10,3,1.0f);

是一个幅度比检测慢的顺序,描述匹配在一起。 现在,我以这样的方式创建它,每次有新的图像到达时,我都会运行我的mex文件,并且所有的声明和类结构都会再次完成,这会让它变慢。

有没有一种方法可以在我的MATLAB脚本开始时(在循环将新图像发送到mex文件之前)启动mex文件,以便它能够完成所有需要的声明并在后台等待来自MATLAB的输入。这会让我的代码更快。 在BRISK的创建者提供的matlab API中,似乎是这样做的,但我不知道如何为我自己的mex代码做同样的事情。

我试过在stackoverflow中搜索这个,但我真的不知道该搜索什么或者调用了什么类型的东西。

谢谢

回答

0

你在寻找一种方法来使对象在mex调用之间持久。见here(编辑):

是的,你可以做一个C++对象调用之间持久的,而你没有 已经指针返回Matlab的工作空间。只需在mexFunction入口点上定义您的 对象。只要您的mex文件保留在内存中(即您不清除mex文件),它将保持为 。