вызов кода opencv c ++ в приложении C #

Я разработал программу на C ++, которая использует OpenCV. Теперь я хочу разработать приложение для Windows на основе форм в C #.
Поскольку C # может обрабатывать только управляемый код, практически невозможно запустить OpenCV непосредственно в приложении C #. Я искал различные способы создания приложения C # с использованием OpenCV, одним из которых является EmguCV, а другой метод, который меня гораздо больше интересует, — это импорт файла c ++ .dll в приложение C # и вызов таким образом неуправляемых функций.

Я начал с создания простых функций на С ++ и смог использовать cout а также cin в моем приложении C # путем импорта DLL. Проблема возникает, когда я пытаюсь включить файлы заголовков OpenCV в мое приложение C ++, и когда я компилирую, я получаю эту ошибку

ошибка LNK1104: не удается открыть файл ‘tbb_debug.lib’

Кто-то делал это раньше, но я не могу понять, как он взаимодействует с C ++ с C # в
Отображение канала веб-камеры в формате cv :: Mat в картинке

Вопрос в том, что у меня есть функция, которая принимает переменную cv :: Mat, выполняет некоторую обработку изображения и возвращает обработанную матрицу. Я хочу использовать эту функцию, написанную на C ++, в моем приложении C #. но проблема в том, что я не могу создать DLL, когда я включаю библиотеку OpenCV в C ++.

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

Я использую Visual Studio 2010 для моего проекта.

5

Решение

Я бы явно экспортировал методы, которые обертывают ваши точки входа в заголовок C ++, а затем использовал P / Invoke для ссылки на них:

extern "C" __declspec(dllexport) BOOL DoSomething();

Затем потребляйте их в C #:

[DllImport("MyOpenCVWrapper.dll")]
private static extern bool DoSomething();

Я бы не стал ссылаться на заголовки OpenCV.

3

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

Хотя это может быть не то, что вы ищете, я выполнил эту задачу с помощью C ++ / CLI и показал ее через сборку. Это было прямо вперед и работало довольно хорошо. Статья в блоге здесь.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector