.Net(dotNet)封装的OpenCV?[关闭]


71

我已经看到了其中的一些。 opencvdotnetSharperCVEmguCV一个on Code Project.

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

Answers:


68

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

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


8
Beware, EmguCV uses a dual GPL3/Commercial license whereas OpenCV uses a BSD license. Note that OpenCVSharp uses an LGPL license. OpenCVSharp is actively developed as of April, 2014.
Kaganar

1
If you have plans to ship your project as a real, maintainable product, then be wary of OpenCVSharp. I played with it for a few weeks - it works fine but the docs and examples are sparse. I like its BSD license and the dev is good/active, but he needs a proper team. EmguCV's documentation, working examples, and community support are vastly superior.
kdbanman

EmguCV depends on an old versions of the system libraries (including GTK+ 2). It might be a problem if you are planning to use it on any unsupported system e.g. Arch Linux.
Dmitry Fedorkov

1
链接入门指南超时我
安迪·P

您的博客是否已迁移@friism?friism.com已死。
Fetchez la vache

22

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


3
它也可以在github上获得
Mike

1
它在NuGet上也可用,如果您使用的是VS2012或更高版本,则建议使用该位置
VoteCoffee 2014年

18

我认为必须注意,最初的问题是在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
我真的很喜欢你的主意 通过忽略第三方包装器来消除一层维护和复杂性听起来很棒。您可以链接/提供经修改的源代码的最小示例吗?
kdbanman

14

NuGetMustHaves很好地总结了NuGet上的软件包及其构建日期和OpenCV修订版。

截至2020年12月22日:

  • EmguCV已于2020年10月7日更新为OpenCV v4.4.0.4099
  • OpenCvSharp已于2020年10月13日针对OpenCV v4.5.0.20201013更新

EmguCV和OpenCvSharp是最近构建的两个软件包,它们似乎是以后的更好选择。

当心,EmguCV使用双重GPL3 /商业许可证(源),而OpenCVSharp使用BSD 3条款许可证。换句话说,OpenCVSharp是免费的商业用途,而EmguCV不是。但是,EmguCV具有出色的文档/示例/支持,并拥有庞大的开发团队,因此在许多情况下,该许可证值得。

值得考虑您将来的用例是什么。如果您只是想使用托管语言快速运行,那么包装程序就可以了。我从那开始。但是当我进入更认真的应用程序时,我发现构建C ++应用程序具有更好的性能,并且在跨平台重用代码方面更有潜力。


在原始帖子发布后的5年内保持答案更新的荣誉。
阿维·特纳



0

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

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


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.