OpenNet的.Net(dotNet)包装器?

时间:2008-09-17 17:22:16

标签: c# .net opencv mono cross-platform

我见过他们中的一些。 opencvdotnetSharperCVEmguCVOne on Code Project

有没有人对这些经历有任何经验?我在Code Project上玩了一下,但是当我尝试做任何复杂的事情时,我得到了一些讨厌的无法捕获的异常(即Msgbox异常)。跨平台(支持Mono)将是最好的。

8 个答案:

答案 0 :(得分:66)

我从opencvdotnet开始,但它并没有真正开发出来。此外,对我需要的功能(facedetection)的支持是不完整的。我现在正在使用EmguCV:它包含了更多的API,而它背后的人对建议和请求非常敏感。代码是一种欣赏的乐趣,并且已知在Mono上工作。

我在我的博客上写了一个快速的getting-started guide

答案 1 :(得分:22)

我们使用OpenCVSharp谷歌代码网站是日语,但它使用最新的OpenCV版本和IDIisposable贯穿其中。它似乎提供了比我们迄今为止看到的任何其他人更多的功能,并且仍然是活跃的。它也有相当广泛的示例程序。

答案 2 :(得分:17)

我认为重要的是要注意原始问题是在 2008 中提出的,而OpenCV 2.0是在 2009 中发布的。 2.0版本引入了一个C ++包装器,它比OP面临的旧C接口更容易使用。对于我的.NET项目,我将所有图形操作留在原生C ++中。

试试这个:创建一个链接到OpenCV库的C ++ / CLR DLL项目。 OpenCV手册描述了如何为Windows C ++ EXE执行此操作,相同的步骤也适用于C ++ / CLR DLL。然后DLL导出可从.NET EXE调用的方法。

要测试它,你应该能够通过一些调整将任何OpenCV样本合并到你的DLL中。 (将.CPP文件添加到项目中,将main()函数转换为类成员等等 - 您知道钻取...)一个好的测试候选者可能是" mat_mask_operations"样品

答案 3 :(得分:10)

OpenCV.NET可从NuGet获得

https://bitbucket.org/horizongir/opencv.net

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

以下是项目网站的功能列表:

  

OpenCV.NET是一个用于流行的OpenCV计算机视觉和图像的.NET界面   处理库。这些绑定得到了发展   在一年的时间里,包括许多功能   其他尝试中缺少,即:

     
      
  • 跨平台Mono兼容性(仅使用P / Invoke)
  •   
  • 非常接近100%支持最新的C API(包括未记录的函数)
  •   
  • 所有支持的方法,类和枚举成员的完整文档/智能感知(从许多不同来源艰苦挖掘)
  •   
  • 支持例外
  •   
  • 垃圾收集器友好:      
        
    • GC了解矩阵和图像使用的实际内存
    •   
    • 即使发生并发垃圾收集,也能保证指针能够在函数调用中存活
    •   
  •   
  • 尽可能遵循C ++ API的对象模型(未来增加对C ++ API的支持)
  •   
  • BSD式许可证(MIT)
  •   

答案 4 :(得分:2)

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

答案 5 :(得分:2)

我使用EmguCV创建了一个NuGet包,以便在C#中轻松启动OpenCv。

看看吧! 在Visual Studio搜索中添加 myEmguCV.Net NuGet包。

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

答案 6 :(得分:0)

SharperCV是我们的首选工具,它不会让我们失望,因为robotics project。虽然它目前被标记为废弃,但代码处于非常好的状态,只需要进行微调即可根据您的需要进行自定义。没有msgbox,实际上是非常理智的异常处理。

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

答案 7 :(得分:0)

我知道这个问题已经回答了很长时间,但我想补充说有一个非常好的包装here。这是您在code project上尝试的openCV包装器的新版本。我已经尝试了几天,一切都很完美。而且,我在几分钟内完成了工作。

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