在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#应用程序中使用cout
和cin
。当我试图在我的c++应用程序中包含OpenCV头文件时,问题来了,当我编译时,我得到了这个错误
错误LNK1104:无法打开文件"tbb_debug.lib">
有些人以前也这样做过,但我不知道他是如何将c++与c#接口的在图片框中显示cv::Mat格式的网络摄像头提要
问题是,我有一个函数,它接收一个cv::Mat变量,并对其进行一些图像处理,然后返回处理后的矩阵。我想在我的c#应用程序中使用用c++编写的函数。但问题是,当我在c++中包含OpenCV库时,我无法创建dll。
所以请不要建议我使用EmguCV或任何其他.NET包装用于OpenCV。
我的项目使用Visual Studio 2010。
我会显式导出将入口点封装在C++头中的方法,然后使用p/Invoke来引用它们:
extern "C" __declspec(dllexport) BOOL DoSomething();
然后在C#中消费:
[DllImport("MyOpenCVWrapper.dll")]
private static extern bool DoSomething();
我不会试图引用OpenCV标头。
虽然它可能不是您想要的,但我用C++/CLI完成了该任务,并通过程序集公开了它。它很直接,效果很好。博客文章在这里。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- OpenCV C++.快速计算混淆矩阵
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 哪些库可以通过Opencv调整曝光率
- 安装opencv失败-粘贴CMakeError.log的内容
- C++中的openCV Mat访问冲突
- OpenCV Android C++ imwrite not found
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- OpenCV 4.1.2 - 从网络摄像头获取帧并将其拆分
- C++ OpenCV 卡尔曼滤波器构造函数错误
- 使用OpenCV和覆盆子上的多个网络摄像头拍摄延时摄影,出现多个V4L错误
- 如何使用OpenCV-C++编写*.mp4视频?
- Mingw-64 在构建和安装后不会编译 openCV 代码