.Net (dotNet) 包装器? [已关闭]

问题描述 投票:0回答:8

我见过有几个。 opencvdotnetSharperCVEmguCVOne on Code Project

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

c# .net opencv mono cross-platform
8个回答
70
投票

我开始使用 opencvdotnet,但它不再真正积极开发。此外,对我需要的功能(面部检测)的支持并不完善。我现在正在使用 EmguCV:它包含了 API 的大部分,并且它背后的人对建议和请求非常敏感。该代码看起来很有趣,并且可以在 Mono 上运行。

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


27
投票

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

截至 2023 年 8 月 8 日:

  • EmguCV 已更新为 OpenCV v4.7.0.5276
  • OpenCvSharp 已更新为 OpenCV v4.8.0.20230708

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

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

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


22
投票

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


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”示例。

我认为最好的包装器是 opencvsharp

http://code.google.com/p/opencvsharp/

2
投票

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


2
投票
myEmguCV.Net

NuGet 包。

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

SharperCV 是我们选择的工具,它并没有让我们失望,对于我们的

机器人项目

0
投票

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

我知道这个问题已经回答了很长时间,但我想补充一点,有一个非常好的包装器

这里

0
投票
代码项目

上尝试过的 openCV 包装器的新版本。我已经尝试了几天,一切都很完美。而且,我在几分钟内就开始工作了。 我不知道与 Mono 的兼容性,但在 Visual Studio 2010 下,它就像一个魅力,节省了我大量的时间和金钱(我的项目是商业的,大多数库都是开源的,许可证不允许商业用途除非发布代码)

© www.soinside.com 2019 - 2024. All rights reserved.