73

我见过有几个。 opencvdotnetSharperCVEmguCV一个代码项目

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

4

8 回答 8

70

我从 opencvdotnet 开始,但它并没有真正积极开发。此外,对我需要的功能(面部检测)的支持不完整。我现在正在使用EmguCV:它封装了 API 的大部分,并且它背后的人对建议和请求非常敏感。该代码令人赏心悦目,并且可以在 Mono 上运行。

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

于 2008-10-05T15:10:53.993 回答
22

我们使用OpenCVSharp,谷歌代码网站是日文的,但它使用最新的 OpenCV 构建并始终暗示 IDisposable。它似乎比我们迄今为止看到的任何其他产品都提供了更多的功能,并且仍然很活跃。它也有相当广泛的示例程序。

于 2010-10-20T02:30:31.233 回答
19

我认为重要的是要注意最初的问题是在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”示例。

于 2012-11-25T18:48:43.780 回答
19

NuGetMustHaves对 NuGet 上的软件包及其构建日期和 OpenCV 版本进行了很好的总结。

截至 2022 年 1 月 11 日:

  • EmguCV于 2021 年 1 月 19 日更新为 OpenCV v 4.5.5.4823
  • OpenCvSharp于 2021 年 1 月 24 日针对 OpenCV v 4.5.5.2021123 更新

EmguCV 和 OpenCvSharp 是最近构建的 2 个软件包,似乎是未来更好的选择。

请注意,EmguCV 使用双重 GPL3/商业许可证(源),而 OpenCVSharp 使用 BSD 3-Clause 许可证。换句话说,OpenCVSharp 可以免费用于商业用途,但 EmguCV 不是。不过,EmguCV 拥有出色的文档/示例/支持和更大的开发团队,这使得许可证在许多情况下都是值得的。

值得考虑您未来的用例是什么。如果您只是想使用托管语言快速运行,那么包装器很好。我就是这样开始的。但是当我进入更严肃的应用程序时,我发现构建一个 python/C++ 应用程序具有更好的性能和更多跨平台重用代码的潜力。

于 2014-10-08T16:46:53.037 回答
2

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

于 2013-05-24T05:35:35.850 回答
2

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

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

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

于 2014-09-20T12:58:52.780 回答
0

SharperCV 是我们选择的工具,它并没有让我们失望,对于我们的机器人项目。尽管它目前被标记为废弃,但代码的状态非常好,只需稍作调整即可根据您的需要对其进行自定义。没有 msgboxes,实际上非常理智的异常处理。

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

于 2008-09-18T10:56:35.683 回答
0

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

我不知道与单声道的兼容性,但在 Visual Studio 2010 下,它就像一个魅力,为我节省了大量的时间和金钱(我的项目是商业的,大多数库都是开源的,具有不允许商业的许可证除非发布代码)

于 2012-10-02T17:15:02.477 回答