用于 OpenCV 的.Net (dotNet)包装器?

我见过好几个,OpencvdotnetSharperCVEmguCV代码项目

有人有这方面的经验吗?我在代码项目中玩了一会儿,但是当我尝试做一些复杂的事情时,我得到了一些讨厌的无法捕捉的异常(例如 Msgbox 异常)。跨平台(支持 Mono)将是最好的。

59161 次浏览

SharperCV 是我们选择的工具,它不会让我们失望,为我们的 机器人项目。即使它目前被标记为废弃,代码的形状真的很好,只需要进行一些小的调整,就可以根据您的需要对其进行定制。没有 msgbox,实际上非常理智的异常处理。

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

我开始使用 opencvdotnet,但它现在已经不再积极开发了。此外,对我需要的特性(人脸检测)的支持也是不完整的。我现在使用的是 EmguCV: 它包装了 API 的很大一部分,而且它的开发者对建议和请求非常敏感。这些代码看起来很有趣,而且众所周知它们可以用于 Mono。

我在我的博客上写了一个简短的 入门指南

我们使用 OpenCVSharp的谷歌代码网站是在日本,但它使用最新的 OpenCV 建设和实施 IDisposable 整个。它似乎提供了比我们迄今为止看到的任何其他系统更多的功能,并且仍然处于活动状态。它也有相当广泛的示例程序。

我知道这个问题已经回答了很长时间,但我想补充的是,有一个非常好的包装 给你。这是您在 代码项目上尝试的 openCV 包装器的新版本。我已经试了几天了,一切都很完美。而且,我几分钟就能修好。

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

我认为需要注意的是,最初的问题是在 二零零八年中提出的,而 OpenCV 2.0是在 二零零九年中发布的。版本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 _ cover _ operation”示例。

我觉得最好的包装纸是开放式的 Http://code.google.com/p/opencvsharp/

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

看看这个! 在 VisualStudio 中搜索并添加 MyEmguCV.Net NuGet 包。

Https://www.nuget.org/packages/myemgucv.net

NuGetMustHaves 对 NuGet 上的软件包进行了很好的总结,包括它们的构建日期和 OpenCV 转速。

截至2022年1月11日:

  • EmguCV 在2021年1月19日为 OpenCV v4.5.5.4823更新
  • OpenCvSharp 在2021年1月24日为 OpenCV v4.5.5.2021123更新

EmguCV 和 OpenCvSharp 是最新版本的两个软件包,似乎是未来更好的选择。

注意,EmguCV 使用双 GPL3/商业许可证 (资料来源),而 OpenCVSharp 使用 BSD 3条款许可证。换句话说,OpenCVSharp 对商业用途是免费的,但 EmguCV 不是。不过,EmguCV 拥有卓越的文档/示例/支持,以及一个更大的开发团队,因此在许多情况下,该许可证是值得的。

值得考虑您未来的用例是什么。如果您只是希望使用托管语言快速运行,那么包装器是可以的。我一开始是那样的。但是,随着我进入更严肃的应用程序领域,我发现构建一个 python/C + + 应用程序具有更好的性能,并且在跨平台重用代码方面具有更大的潜力。