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)。
類別 | 優點 | 缺點 |
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未完待續