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

0

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

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

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

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

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

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

благодаря

Теги:
opencv
mex
brisk

1 ответ

0
Лучший ответ

Что вы ищете, чтобы сделать объекты постоянными между mex-вызовами. См. Здесь (отредактировано):

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню