1、背景

部门的软件课用的是c#,我们图像处理用的c++,c++版的代码要想在c#上运行,通过把C++封装成动态链接库在C#中调用,这样在修改算法的过程中就会非常的不方便,封装DLL的时候也比较麻烦。所以思考有没有不用封装,能直接在c#上用的opencv库。

针对C#的计算机视觉库主要有两种:EmguCV和CVSharp.

1.1 EmguCV和CVSharp的区别

a、EmguCV的优势在于不仅仅提供了计算机视觉函数接口并且提供了一系列界面控件接口,但目前只支持OpenCV1的书写风格。

b、OpenCVSharp是OpenCV的.NET wrapper,它比EmguCV更接近于原始的OpenCV。网上常见的免费版EmguCV则是GUN协议,任何发表都需要至少公布你的源代码,相比之下OpenCVSharp则是相对温和多的LGUN协议,对商业应用友好(基本上相当于BSD)。

表1-1 不同opencv库的对比

类别

优点

缺点

opencv(C++)

库文件调用方便、商业友好

安装包大,需要封装成DLL。

EmguCV

界面开发快

CV1的书写风格、安装包大、商业不友好

OpenCVSharp

界面开发快、库文件调用方便、安装包小、商业友好

没有(你打我呀)

 我选择的是opencvsharp,下面主要介绍opencvsharp版的安装和使用。

2、opencvsharp的安装

注:github官网介绍的更全面(https://github.com/shimat/opencvsharp

2.1 opencvsharp的安装(VS15)

在VS中,通过其工具中自带的扩展包就安装了,不需要像C++中用opencv那样,还要配置属性。

安装步骤:工具——》Nuget包管理器——》管理解决方案的Nuget包。直接搜索opencvsharp。

emgucv与opencvsharp区别 emgucv opencvsharp_c#

可以看到版本更新还是比较及时的 。

2.2 opencvsharp的使用

Csharp版的opencv的资料虽然不像c++版的那么多,但并不是没有。


emgucv与opencvsharp区别 emgucv opencvsharp_github_02

 

3 opencvSharp与C++版的opencv使用中的区别

这里主要记录我把C++版的程序转c#时遇到的小问题。

3.1未完待续