.Net(dotNet)OpenCV的包装?

我见过其中有几个。 opencvdotnet , SharperCV , EmguCV , 一个代码项目 。

有没有人有任何这些经验? 我在Code Project上玩了一下,但是当我试图做任何复杂的事情时,我得到了一些不可捕捉的exception(即Msgboxexception)。 跨平台(支持单声道)将是最好的。

我开始与opencvdotnet,但它不是真的积极开发更多。 此外,支持我所需要的function(facedetection)是不完整的。 我现在正在使用EmguCV :它封装了API的很大一部分,它背后的人对build议和请求非常敏感。 该代码是一个喜悦看,并已知在单声道工作。

我在我的博客上写了一个快速入门指南 。

我们使用的OpenCVSharp的谷歌代码网站是在日本,但它使用最新的OpenCV的构build和impisment IDisposable始终。 它似乎提供了比我们迄今为止所看到并且仍然活跃的任何其他function更多的function。 它也有相当广泛的示例程序。

我认为重要的是要注意,最初的问题是在2008年问的,而OpenCV 2.0是在2009年发布的。 2.0版本引入了一个C ++包装器,与OP所面临的旧的C接口相比,它更容易使用。 对于我的.NET项目,我将所有的graphics操作都留在本地C ++中。

试试这个:创build一个链接到OpenCV库的C ++ / CLR DLL项目。 OpenCV手册介绍了如何为Windows C ++ EXE执行此操作,同样的步骤也适用于C ++ / CLR DLL。 那么当然DLL会导出可从.NET EXE调用的方法。

为了testing它,你应该可以将任何OpenCV示例合并到你的DLL中,并稍微调整一下。 (将.CPP文件添加到您的项目中,将main()函数转换为类成员等。 – 您知道钻取…)一个好的testing候选者可能是“mat_mask_operations”示例。

NuGet提供OpenCV.NET

https://bitbucket.org/horizo​​ngir/opencv.net

https://www.nuget.org/packages/OpenCV.Net

以下是项目网站的function列表:

OpenCV.NET是stream行的OpenCV计算机视觉和image processing库的.NET接口。 这些绑定是在一年的时间里发展起来的,其中包含了许多其他尝试中缺less的function,即:

  • 跨平台单声道兼容性(仅使用P / Invoke)
  • 非常接近最新C API的100%支持(包括无证函数)
  • 所有支持的方法,类和枚举成员的完整文档/智能感知(从许多不同来源艰苦地开采)
  • 支持例外
  • 垃圾收集友好:
    • GC知道matrix和图像使用的实际内存
    • 即使发生并发垃圾收集,指针也可以保证在函数调用中不受影响
  • 尽可能多地遵循C ++ API的对象模型(面向将来增加对C ++ API的支持)
  • BSD式执照(MIT)

我创build了一个NuGet包,使用EmguCV轻松地在C#中使用OpenCv。

一探究竟! 在Visual Studio中search并添加myEmguCV.Net NuGet包。

https://www.nuget.org/packages/myEmguCV.Net

我认为最好的包装是opencvsharp http://code.google.com/p/opencvsharp/

SharperCV是我们的首选工具,它不会让我们失望,因为我们的机器人项目 。 即使它现在被标记为废弃,代码的状态也非常好,只需稍作调整即可根据需要对其进行自定义。 没有msgboxes,实际上非常理智的exception处理。

不是跨平台,但是,由于互操作层。

我知道这个问题已经回答了很长时间,但是我想补充一点,这里有一个很好的包装。 这是您在代码项目上尝试的openCV包装器的新版本。 我试了几天,一切都很完美。 而且,我在几分钟之内就能完成工作。

我不知道与单声道的兼容性,但在Visual Studio 2010下,它像一个魅力,节省了我吨的时间和金钱(我的项目是商业和大多数图书馆是开放源代码,不允许商业利用率除非发布代码)