繁体   English   中英

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

[英]calling opencv c++ code in C# application

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

我开始在c ++中创建简单的函数,我可以通过导入dll在我的C#应用​​程序中使用coutcin 当我尝试在我的c ++应用程序中包含OpenCV头文件时,当我编译时,我遇到此错误

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

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

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

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

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

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

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

然后在C#中使用它们:

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

我不会尝试引用OpenCV标头。

虽然它可能不是您正在寻找的,但我使用C ++ / CLI完成了该任务并通过程序集公开它。 它很直接,工作得很好。 博客文章在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM