C ++ mex постоянно работает и ждет ввода MATLAB

Я работаю с opencv, который я интегрировал в MATLAB. Я использую библиотеки Features2D и несвободные opencv для запуска различных алгоритмов обнаружения и описания ключевых точек.

После многих тестов я заметил, что BRISK работает довольно хорошо с моими данными. Проблема в том, что конструктор класса BRISK очень медленный по сравнению с другими алгоритмами.
эта строка:

Детектор BRISK (10,3,1.0f);

на порядок медленнее, чем обнаружение, описание совпадает все вместе.
Теперь я делаю так, чтобы каждый раз, когда приходила новая пара изображений, я запускал свой mex-файл, и все объявления и конструкции классов выполнялись снова, что замедляет работу.

Есть ли способ запустить mex-файл в начале моего сценария MATLAB (до цикла, отправляющего новые изображения в mex-файл), чтобы он делал все необходимые объявления и продолжал ждать в фоновом режиме для ввода из MATLAB. Это сделало бы мой код намного быстрее.
В предоставленном Matlab API от создателей BRISK кажется, что это сделано таким образом, но я не мог понять, как сделать то же самое для моего собственного мекс-кода.

Я попытался найти это в stackoverflow, но я действительно не знаю, что искать или как это называется.

Спасибо

0

Решение

То, что вы ищете способ сделать объекты постоянными между вызовами mex. Увидеть Вот (Под редакцией):

Да, вы можете сделать объект C ++ постоянным между вызовами, и вы не
должен вернуть указатель на рабочую область Matlab. Просто определите свой
объект над точкой входа mexFunction. Это останется постоянным, как
пока ваш mex-файл остается в памяти (т.е. вы не очищаете mex-файл).

0

Другие решения

Других решений пока нет …