2013-03-25 1 views
2

Я работаю над проектом Qt, который требует от меня работать с общей библиотекой Matlab C++. Я в основном работаю с изображениями, которые я приобретаю, и мне нужно продолжить их обработку позже.Вызов Matlab из C++ с обновленными вводами

Для меня абсолютно необходимо, чтобы я приобретал изображения на платформе C, а затем вызывал Matlab для обработки в случае необходимости. Мои изображения идут с высокой скоростью: около 100 кадров в секунду.

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

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

+0

Вы имеете в виду, что вы создаете общую библиотеку из кода matlab, используя интерфейс matlab для C. И вызвать эту общую библиотеку для обработки вашего изображения? –

+0

@Min Lin..Да, это именно то, о чем мой проект. Изображения поступают ко мне со скоростью 100 кадров в секунду, и мне нужно иметь возможность выполнять некоторую параметризацию с помощью SDK в Qt и всю обработку, используя встроенную библиотеку matlab. – Alok

+0

Я не совсем понимаю это: «Я могу просто вызвать функцию Matlab один раз, и мои входы будут меняться каждый раз». Ваш вопрос, как сделать это в режиме реального времени со скоростью 100 кадров в секунду? –

ответ

1

Вы создаете библиотеку из кода MATLAB с использованием MATLAB Compiler и ожидаете, что сможете называть ее 100 раз в секунду?

Этого не произойдет - накладные расходы на вызов библиотеки слишком высоки. Похоже, что в вашей библиотеке также может быть какой-то заговор, который, вероятно, займет слишком много времени.

Возможно, вы изучили использование MATLAB Coder для преобразования вашего алгоритма обработки изображений MATLAB в код C, а затем интегрируете код C непосредственно в свой основной код. Большая часть Image Processing Toolbox поддерживается MATLAB Coder, а также панель инструментов Computer Vision System Toolbox и большая часть инструментов для обработки сигналов.

+0

Я согласен @Sam Roberts. Я не получаю его со скоростью 100 кадров в секунду. Но я понял, что загрузка данных занимает больше времени. Также функции Calling Plot также занимают много времени. Я работал над кодом, передавал данные по ссылке, загружал данные в минимальное количество раз и вызывал функцию графика, когда и где это необходимо, я мог бы получить ее достаточно быстро, чтобы выглядеть как видео в реальном времени. Первоначально одна из моих данных загружалась каждый раз из файла мата. Это заняло много времени. И да, я собираюсь заменить библиотеку рано или поздно с помощью библиотеки C++ maths/computer vision/graphics. Благодарим вас за ввод. – Alok

Смежные вопросы