OpencvSharp的踩坑之路

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。

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

2.2 opencvsharp的使用

Csharp版的opencv的资料虽然不像c++版的那么多,但并不是没有。刚接触的话,可以看看这个博客(http://www.skcircle.com/?id=898),讲了他的选择以及用OpenCvSharp写的一个图像处理软件 。

资料1:官网OpenCvSharp的api(http://shimat.github.io/opencvsharp/api/OpenCvSharp.Cv2.html

资料2:官方的openCvSharp的例子(https://github.com/shimat/opencvsharp_samples/

资料3:C#opencv的例子(https://www.csharpcodi.com/csharp-examples/

资料3的网站比较好用,哪个算子不会用,直接搜就行了,进去后根据例程学习一下就会了。

 

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

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

3.1未完待续

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章