在Labview中调用基于OpenCV的DLL

vecaoik1  于 2023-08-06  发布在  其他
关注(0)|答案(3)|浏览(292)

我试图在LabVIEW中调用一个简单的基于openCV的Dll,并不断得到“未找到库或加载失败”错误。
我使用LabVIEW 64位,Dll是用C++为64位构建的。它的功能只是水平翻转图像。我试图复制opencv_world470.dll和opencv_world470d.dll无处不在。与我的Dll相同的目录、system32和LabVIEW.exe所在的目录。我将它们的目录添加到环境变量的PATH中,但它仍然不起作用。当我在我的Dll上运行dumpbin时,它列出了以下依赖项:opencv_world470d.dll opencv_world470.dll VCRUNTIME140.dll api-ms-win-crt-runtime-l1-1-0.dll KERNEL32.dll我尝试运行另一个Dll,它只是对两个数字求和并返回结果,它工作正常。这个简单的Dll根据dumpbin只使用最下面的三个依赖项。为什么LabVIEW找不到openCV的依赖关系?还是其他问题我计划在未来使用更多的openCV DLL,所以理想情况下,我更愿意让openCV库保持动态而不是静态。谢谢你,谢谢

8ehkhllq

8ehkhllq1#

我也有同样的问题。但是当我换了机器它就能工作了。所以我检查了其他几台机器,以确保它不是我的系统问题。找到解决方案后,将opencv dll添加到项目的debug文件夹中,cpp dll就位于该文件夹中。

pb3skfrl

pb3skfrl2#

有趣的是,你同时链接了发布和调试版本,你提到你依赖于opencv_world470d.dll和opencv_world470.dll。一般来说,开发简单的 Package 器并不复杂,8位灰度图像的代码看起来像这样:

#include "opencv2\opencv.hpp"

using namespace cv;

extern "C" __declspec(dllexport) int Flip(void *img, short Width, short Height, int FlipMode)
{
    try{
        Mat Image(Size(Width, Height), CV_8U, img, Width);
        flip(Image, Image, FlipMode);
    }
    catch (Exception e){
        const char* err_msg = e.what();
        return 1; //OpenCV Error occurred
    }
    return 0;
}

字符串
在这里我放置小项目:https://github.com/AndrDm/OpenCVFlipDemoLV,可能对你或其他人有帮助。安德烈

u7up0aaq

u7up0aaq3#

我已经设法使用OpenCV与EMGU .NET Package 器和LabVIEW。有些函数需要委托,LV不支持它们,但主要的MAT函数可以工作。

相关问题