Перейти к содержимому
Compvision.ru
fedor_malashin

Создание dll, использующей openCV (C++)

Recommended Posts

Здравствуйте.

 

Пытался ли кто-нибудь создать dll из С++-кода, использующего OpenCV, и использовать её в C++ или C#?

Я столкнулся со следующим: Преодолев ошибки, связанные с созданием динамических типов данных в тестовой dll, я подумал, что проблема уже решена. 

Теперь я могу использовать контейнеры в коде dll, но как только я создаю что-то из OpenCV (я пробовал создать матрицу cv::Mat, заполненную нулями), то функция LoadLibrary возвращает нулевой указатель. Работаю в x64 Debug, opencv_world411.dll так же клал в папку проекта. Если потребуется код и его результаты (которые я описал, в принципе, про нулевой указатель), могу потом запостить его. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так вся OpenCV состоит из DLL, использующих OpenCV :) 

Откройте исходники, и сравните с тем что у вас.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сейчас создал cv::Point и вернул p.x из функции - работает! А что с cv::Mat не так, не пойму.. Исходники посмотрю, спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А чем не устраивают готовые пакеты? OpenCvSharp3, например. Там же все уже сделали за вас ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 14.10.2019 at 18:02, fedor_malashin сказал:

Работаю в x64 Debug, opencv_world411.dll так же клал в папку проекта.

Для Debug нужен opencv_world411d.dll , opencv_world411.dll для Release, может в этом дело.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Dimus сказал:

Для Debug нужен opencv_world411d.dll , opencv_world411.dll для Release, может в этом дело.

Опечатался тут, но в проекте лежит нужная версия. 

3 часа назад, idrua сказал:

А чем не устраивают готовые пакеты? OpenCvSharp3, например. Там же все уже сделали за вас ))

В проекте на C# используется OpenCvSharp2, там почему-то функция solvePnP работает неправильно, а она мне нужна. Коллега говорит, что пробовал ее и в 3 версии, так же вернула не то. Весь проект использует IplImage, а в новых версиях, как я понимаю, cvMat. 

Даже если это не брать в расчет, странно то, что если в коде использовать вещь типа Point.x, то dll подключается, как надо. А если cv::Mat, то генерируется исключение. Может, надо что-то прописать в настройках проекта дополнительно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Dimus сказал:

Для Debug нужен opencv_world411d.dll , opencv_world411.dll для Release, может в этом дело.

Мда... Посмотрел не в ту директорию в дабл коммандере, и действительно, релизная версия лежала))) Все заработало сейчас, матрица создается )) Благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×