Jump to content
Compvision.ru
Sign in to follow this  
fedor_malashin

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

Recommended Posts

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 14.10.2019 at 18:02, fedor_malashin сказал:

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

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

  • Thanks 1

Share this post


Link to post
Share on other sites
3 часа назад, Dimus сказал:

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
3 часа назад, Dimus сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×