2014-02-09 34 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文件),它將保持爲 。