告別EmguCV!OpenCvSharp3 初探
最近接了個小畢設,要求用winform呼叫OpenCV識別一些簡單的物件。網上關於呼叫DLL的文看的我一頭霧水,而且也知道有類似OpenCV的C#介面的計算機視覺庫,也就直接去了解這方面了。EmguCV應該是比較早且之前比較出名的C#版OpenCV,目前專案有507個stars。然而另一個日本人編寫的類庫已經有1200+的stars,並且在Visual Studio中下載量也已經超過了OpenCvSharp。下面就以OpenCvSharp為大家傳授點人生經驗(啊蛤)。
作者github
INTRO
這是專案的,裡面有詳細的介紹和Document。
專案Feature
專案Features如上。比較好的一點就是能夠很方便地跟.Net平臺的資料結構進行轉換。而且相對EmguCV而言,實現的演算法更多,風格也跟C++ API更相似。
對於商用來說,EmguCV使用的是GPL協議,OpenCvSharp則是跟OpenCV一樣的BSD協議(網上有人說是LGPL?但github上的README列出來的是BSD)。這方面的話對於學習者來說沒啥區別,但對於正兒八經的開發者來說還是需要考慮的,BSD則是更有吸引力的協議。
至於安裝也是十分簡單,只需要在VS上就能完成。我這裡使用的是2017 community,僅供參考。
開啟NuGet包管理器
等待安裝完成就好
可以看到,下載量足足有20w,而且已經超過了EmguCV了。
Demo
這裡使用Winform做個帶介面的小程式,拖個按鈕就好。也可以使用空專案。
private void btnOpen_Click(object sender, EventArgs e){ //選擇圖片 OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.RestoreDirectory = true; string imgName = ""; if (openFileDialog.ShowDialog() == DialogResult.OK) { imgName = openFileDialog.FileName; } Console.WriteLine("檔名為" + imgName); //讀取並進行邊緣檢測 Mat srcImg = new Mat(imgName, ImreadModes.Color); Cv2.ImShow("input", srcImg); Mat dstImg = new Mat(); Cv2.Canny(srcImg, dstImg, 50, 200); Cv2.ImShow("output", dstImg); }
國際慣例,lenna女神拿出來
Canny邊緣檢測
其他
由於一年多沒用C#和Winform,所以語法方面忘得差不多了。嘮叨一下專案中遇到的坑。
在C艹中,ROI是可以這樣定義的。image是事先定義的Mat。
Mat imageROI = image(Rect(500, 250, logo.cols, logo.rows));
而在C井中,要這樣定義
Mat dstImg = new Mat(srcImg, new Rect(x, y, width, height));
當時想用C++的Style來定義,搞了半天發現根本就沒實現。。。當時就在吐槽,後來發現C#是不能對括號進行過載的 = =!真是尷尬。C#這方面的話還是要用熟練,搞機器視覺這行還是很有用的。
作者:Jacob楊幫幫
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4301/viewspace-2819327/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#中Emgucv呼叫HalconC#
- EmguCV4.4+VS2019 (4)
- 初探Java型別擦除Java型別
- 初探驗證碼識別
- Emgucv使用中常用函式總結函式
- 初探 TypeScript 型別程式設計TypeScript型別程式設計
- 初探Redis-基礎型別ListRedis型別
- 初探Redis-基礎型別HashRedis型別
- SAP RETAIL 補貨型別RF之初探 IAI型別
- SAP RETAIL 補貨型別RF之初探 IIAI型別
- 畢馬威:初探元宇宙報告(附下載)元宇宙
- Android 反編譯初探 應用是如何被注入廣告的Android編譯
- Puppeteer 初探
- gRPC 初探RPC
- ## RATreeView 初探View
- 初探Firewalld
- Serverless初探Server
- Mobx 初探
- 初探PWA
- 初探TCPTCP
- 初探 BaconJSJS
- 初探 TypeScriptTypeScript
- ECharts 初探Echarts
- Quantum 初探
- 初探 XSS
- 初探canvasCanvas
- puppeteer初探
- Promise初探Promise
- websoctet初探Web
- 初探 Recompose
- jsbridge初探JS
- Nginx 初探Nginx
- Deno 初探
- ELK初探
- Quartz初探quartz
- 初探IndexedDBIndex
- jQuery初探jQuery
- Docker初探Docker