我已经看到了其中的一些。 opencvdotnet,SharperCV,EmguCV,一个on Code Project.
有没有人有任何经验?我在Code Project上玩了一段时间,但是一旦尝试做任何复杂的事情,我就会遇到一些讨厌的不可捕获的异常(即Msgbox异常)。跨平台(支持Mono)是最好的。
我已经看到了其中的一些。 opencvdotnet,SharperCV,EmguCV,一个on Code Project.
有没有人有任何经验?我在Code Project上玩了一段时间,但是一旦尝试做任何复杂的事情,我就会遇到一些讨厌的不可捕获的异常(即Msgbox异常)。跨平台(支持Mono)是最好的。
Answers:
我们使用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”示例。
NuGetMustHaves很好地总结了NuGet上的软件包及其构建日期和OpenCV修订版。
截至2020年12月22日:
EmguCV和OpenCvSharp是最近构建的两个软件包,它们似乎是以后的更好选择。
当心,EmguCV使用双重GPL3 /商业许可证(源),而OpenCVSharp使用BSD 3条款许可证。换句话说,OpenCVSharp是免费的商业用途,而EmguCV不是。但是,EmguCV具有出色的文档/示例/支持,并拥有庞大的开发团队,因此在许多情况下,该许可证值得。
值得考虑您将来的用例是什么。如果您只是想使用托管语言快速运行,那么包装程序就可以了。我从那开始。但是当我进入更认真的应用程序时,我发现构建C ++应用程序具有更好的性能,并且在跨平台重用代码方面更有潜力。
我认为最好的包装器是opencvsharp http://code.google.com/p/opencvsharp/
我使用EmguCV创建了一个NuGet包,以使其易于在C#中从OpenCv开始。
看看这个!在Visual Studio中搜索并添加myEmguCV.Net NuGet包。