文章目錄
- 一、OpenCV 介紹
- 二、OpenCvSharp 介紹
- 三、OpenCvSharp環境搭建
- 3.1 創建新項目
- 3.2 添加 NuGet組件
- 3.3 代碼測試
- 3.4 相較于 C++ OpenCV不同的之處
- 四、LearnOpenCV
- 有時候,單純c#做前端時會聯合C++實現的dll來落地某些功能
- 由于有時候會用C++ - Opencv實現算法后封裝成dll,但是有時候會感覺麻煩,不如直接通過C#直接調用Opencv
一、OpenCV 介紹
-
OpenCV是基于Apache2.0許可(開源)發行的跨平臺計算機視覺和機器學習函數庫,支持Windows、Linux、Android和Mac OS操作系統。
-
OpenCV由一系列C/C++函數和少量C++類構成,利用MMX和SSE指令。
-
OpenCV實現了圖像處理和計算機視覺方面的很多通用算法。
-
OpenCV支持
C++、C#、Java、Golang、Ruby和MATLAB
開發。
OpenCv官網
-
C#是開發效率最高
,代碼最優雅的唯一工業軟件開發語言,開發OpenCV當然必須選擇C#。 -
用C#開發OpenCV與調用其他的C/C++類庫是一樣的路徑:(1)ImportDLL;(2)Wrapper;
推薦Wrapper方式。目前最好的是 OpenCvSharp。
二、OpenCvSharp 介紹
OpenCvSharp是一個OpenCV的.Net wrapper,應用最新的OpenCV庫開發,使用習慣比EmguCV更接近原始的OpenCV,有詳細的使用樣例供參考。該庫采用LGPL發行,對商業應用友好。使用OpenCvSharp,可用C#,VB.NET等語言實現多種流行的圖像處理(image processing)與計算機視覺(computer vision)算法。
1.相較于SharperCV與OpenCVDotNet,OpenCvSharp直接封裝了更多的OpenCV方法,降低學習難度。
2.大部分了繼承了IDisposable接口,方便使用using語句塊。
3.不強加面向對象思維,可以直接調用原生風格的OpenCV方法。
4.可以將IplImage直接轉為Bitmap(GDI+) 或者WriteableBitmap(WPF)。
5.支持Mono。可以運行于支持Mono的任何平臺上(如Linux,BSD,Mac OS X等)。
OpenCvSharp
三、OpenCvSharp環境搭建
3.1 創建新項目
3.2 添加 NuGet組件
推薦用Visual Studio 的 NuGet,直接安裝,快速,維護也方便。
安裝下面三個基本的組件,如果要開發更多應用,可再安裝其他:
- OpenCvSharp4
- OpenCvSharp4.runtime.win
- OpenCvSharp4.Extensioins
方法:在VS項目界面:項目->管理NuGet程序包;在出現的新界面中搜索 opencvsharp,找到上面三個組件下載即可自動安裝;
動畫教程參考
3.3 代碼測試
測試代碼,看是否Opencv包可以正常調用:
只需添加一句
using OpenCvSharp;
在 static void Main(string[] args)
中添加
//創建一張300*300全白圖像,和讀取一張本地圖像,進行顯示測試var src = new Mat(new Size(300,300), MatType.CV_8U, Scalar.All(255));Mat img = Cv2.ImRead("D:\\Projects\\Programming_test\\test_Images\\1.jpg");Cv2.ImShow("src", src);Cv2.ImShow("img", img);Cv2.WaitKey(0);
完整代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;using OpenCvSharp;namespace CvSharp
{class Program{static void Main(string[] args){//創建一張128*128全白圖像,和讀取一張本地圖像,進行顯示測試var src = new Mat(new Size(300,300), MatType.CV_8U, Scalar.All(255));Mat img = Cv2.ImRead("D:\\Projects\\Programming_test\\test_Images\\1.jpg");Cv2.ImShow("src", src);Cv2.ImShow("img", img);Cv2.WaitKey(0);}}
}
運行結果
如果沒有添加 using OpenCvSharp
,Opencv包調用就找不到
3.4 相較于 C++ OpenCV不同的之處
-
1.這里
沒有進行
包含目錄、庫目錄、附加依賴項 等設置 -
2.Debug ,Release 模式下,支持任何CUP,不再是X86,X64選項
-
3 .ms文件 及 自動生成的配置文件
四、LearnOpenCV
印度程序員Satya Mallick制作的OpenCV學習網站,有一些實用文章與代碼。
https://learnopencv.com/
THE BEST DOCUMENT MANAGEMENT SYSTEM 315SOFT.COM
OpenCv C#開發環境配置參考:
C# - Opencv應用(1) 之VS下環境配置詳解
C#,OpenCv開發指南(01)——C#開發環境OpenCvSharp的安裝、搭建與可視化教程