在C#应用程序中调用opencv c ++代码

Muj*_*han 5 c# c++ opencv

我开发了一个使用OpenCV的c ++程序.现在我想在C#中开发一个基于Windows窗体的应用程序.由于C#只能处理托管代码,因此几乎不可能在C#应用程序上直接运行OpenCV.我已经搜索了使用OpenCV创建C#应用程序的不同方法,其中一个是EmguCV,另一个我更感兴趣的方法是在C#应用程序中导入c ++ .dll文件并以这种方式调用非托管函数.

我开始在C创建简单的功能++和我能使用cout,并cin在通过导入DLL我的C#应用程序.当我尝试在我的c ++应用程序中包含OpenCV头文件时,当我编译时,我遇到此错误

错误LNK1104:无法打开文件'tbb_debug.lib'

有人曾经这样做过,但是我无法弄清楚他是如何用c#在Cv :: Mat格式的网络摄像头显示 c ++

问题是我有一个函数,它接受一个cv :: Mat变量并对其执行一些图像处理并返回处理过的矩阵.我想在我的C#应用​​程序中使用用c ++编写的函数.但问题是,当我在c ++中包含OpenCV库时,我无法创建dll.

所以请不要建议我使用EmguCV或OpenCV的任何其他.NET包装器.

我正在为我的项目使用Visual Studio 2010.

til*_*arr 3

我将显式导出将入口点包装在 C++ 标头中的方法,然后使用 P/Invoke 引用它们:

extern "C" __declspec(dllexport) BOOL DoSomething();
Run Code Online (Sandbox Code Playgroud)

然后在 C# 中使用它们:

[DllImport("MyOpenCVWrapper.dll")]
private static extern bool DoSomething();
Run Code Online (Sandbox Code Playgroud)

我不会尝试引用 OpenCV 标头。