[英]calling opencv c++ code in C# application
我开发了一个使用OpenCV的c ++程序。 现在我想在C#中开发一个基于Windows窗体的应用程序。 由于C#只能处理托管代码,因此几乎不可能在C#应用程序上直接运行OpenCV。 我已经搜索了使用OpenCV创建C#应用程序的不同方法,其中一个是EmguCV,另一个我更感兴趣的方法是在C#应用程序中导入c ++ .dll文件并以这种方式调用非托管函数。
我开始在c ++中创建简单的函数,我可以通过导入dll在我的C#应用程序中使用cout
和cin
。 当我尝试在我的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.