首先先介紹一下OpenCV,OpenCV的全稱是:Open Source Computer Vision Library,OpenCV是一個基于(開源)發行的跨平台計算機視覺庫,可以運作在Linux、Windows和Mac OS作業系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實作了圖像處理和計算機視覺方面的很多通用算法。OpenCV 擁有包括 300 多個C函數的跨平台的中、高層 API。它不依賴于其它的外部庫——盡管也可以使用某些外部庫。
EmguCV是OpenCV的一個跨平台的.Net封裝,由于OpenCV是用C和C++編寫的,Emgu用C#對其進行封裝,允許用.Net語言來調用OpenCV函數,如C#、VB、VC++等,同時該封裝也可以被編譯到Mono平台和允許在Windows、Mac OS、Android、iPhone、iPad等多個平台上運作
特性:
Image class with Generic Color and Depth
Automatic garbage collection(自動垃圾回收)
Xml Serializable Image(用于網絡)
Image class / Direct invoke function from OpenCV(直接對OpenCV函數的invoke操作)
Generic operations on image pixel(對像素操作)
接下來看看EmguCV的使用
這裡使用的是 libemgucv-windows-universal-gpu-2.4.9.1847.exe (228.6 MB)
2、解壓或安裝完後得到下面檔案
先安裝 vcredist_x86 (如果需要開發的是64位的程式,擇安裝x64版本,我是兩個都裝)
3、進入bin/x86檔案夾
圖中框出來的是運作時所需要的依賴檔案,在開發時,需要把這些檔案複制到程式的Debug檔案夾内,不然會抛出 TypeInitializerException異常
4、有關Emgu相關的類都在bin檔案夾裡面
5、下面示範一下Hello World程式
建立一個工程,引用兩個庫
引用命名控件,記得還要把上面框出來的OpenCV依賴檔案複制到Debug目錄下
usingEmgu.CV;usingEmgu.CV.CvEnum;using Emgu.CV.Structure;
添加一個按鈕,一個PictureBox控件
private void button1_Click(objectsender, EventArgs e)
{
Image img = new Image(480, 320, new Bgr(0, 255, 0));
MCvFont f= new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 1.0, 1.0);
img.Draw("hello world", ref f, new Point(10, 80), new Bgr(0, 0, 0));
pictureBox1.Image=img.ToBitmap();
}