.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/horizongir/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包。
我认为最好的包装是opencvsharp http://code.google.com/p/opencvsharp/
SharperCV是我们的首选工具,它不会让我们失望,因为我们的机器人项目 。 即使它现在被标记为废弃,代码的状态也非常好,只需稍作调整即可根据需要对其进行自定义。 没有msgboxes,实际上非常理智的exception处理。
不是跨平台,但是,由于互操作层。
我知道这个问题已经回答了很长时间,但是我想补充一点,这里有一个很好的包装。 这是您在代码项目上尝试的openCV包装器的新版本。 我试了几天,一切都很完美。 而且,我在几分钟之内就能完成工作。
我不知道与单声道的兼容性,但在Visual Studio 2010下,它像一个魅力,节省了我吨的时间和金钱(我的项目是商业和大多数图书馆是开放源代码,不允许商业利用率除非发布代码)