关于OpenCV的c#:. Net(dotNet)包装器?

关于OpenCV的c#:. Net(dotNet)包装器?

.Net (dotNet) wrappers for OpenCV?

我已经看到了其中的一些。 opencvdotnet,SharperCV,EmguCV,一个on Code Project。

有没有人有任何经验? 我在Code Project上玩了一段时间,但是当我尝试做任何复杂的事情时,我立即遇到了一些讨厌的不可捕获的异常(即Msgbox异常)。 跨平台(支持Mono)是最好的。


我从opencvdotnet开始,但现在还没有真正积极地进行开发。此外,对我需要的功能(面部检测)的支持还很少。我现在正在使用EmguCV:它包装了API的很大一部分,其背后的家伙对建议和请求非常敏感。该代码令人高兴,并且可以在Mono上运行。

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


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


我认为必须指出,最初的问题是在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"示例。


OpenCV.NET NuGet的最新更新时间为2016年12月30日,BitBucket的更新时间为2017年3月31日,因此似乎缺乏很好的支持。
Emgu CV于此编辑时已于2019-10-06更新,似乎是未来的更好选择。

可从NuGet获得OpenCV.NET。

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

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

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

OpenCV.NET is a .NET interface for the popular OpenCV computer vision and image
processing library. These bindings were developed
over the course of a year and include many features that have been
missing from other attempts, namely:

  • Cross-platform Mono compatibility (only P/Invoke is used)
  • Very close to 100% support of the latest C API (including undocumented functions)
  • Full documentation/intellisense for all supported methods, classes and enum members (arduously mined from many different sources)
  • Support for exceptions
  • Garbage-collector friendly:

    • GC is aware of the actual memory used by matrices and images
    • Pointers are guaranteed to survive function calls even if concurrent garbage collection happens
  • Object model following C++ API as much as possible (towards future increased support of C++ API)
  • BSD-style license (MIT)

我使用EmguCV创建了一个NuGet软件包,以使其易于在C#中从OpenCv开始。

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

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


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


我知道这个问题已经回答了很长时间,但是我想补充一点,这里有一个很好的包装器。这是您在代码项目上尝试过的openCV包装器的新版本。我已经尝试了几天,一切正常。另外,我在几分钟内就可以正常工作。

我不知道与mono的兼容性,但是在Visual Studio 2010下,它像一个魅力一样工作,节省了我很多时间和金钱(我的项目是商业的,大多数库都是开源的,许可证不允许商业使用。使用率,除非发布代码)


SharperCV是我们的机器人项目的首选工具,它并不会令我们失望。即使当前已将其标记为已废弃,该代码的状态也非常好,仅需进行少量调整即可根据您的需要对其进行自定义。没有msgboxes,实际上异常的异常处理。

但是,由于互操作性层的缘故,它不是跨平台的。


推荐阅读