0

我正在使用我集成到 MATLAB 中的 opencv。我正在使用 Opencv 的 Features2D 和 Nonfree 库来运行不同的关键点检测和描述算法。

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

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

比检测慢一个数量级,描述一个匹配。现在,我以这样一种方式制作它,每次新的一对图像到达时,我都会运行我的 mex 文件,并且所有声明和类构造都会再次完成,这使得它变慢了。

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

我尝试在 stackoverflow 中搜索它,但我真的不知道要搜索什么或这种东西叫什么。

谢谢

4

1 回答 1

0

您正在寻找一种使对象在 mex 调用之间持久化的方法。见这里(编辑):

是的,您可以使 C++ 对象在调用之间持久化,并且您不必将指针返回到 Matlab 工作区。只需在 mexFunction 入口点上方定义您的对象。只要您的 mex 文件保留在内存中(即您不清除 mex 文件),它将保持持久性。

于 2014-02-09T13:49:02.803 回答