C/C++人臉識別功能,C++再次走上巔峰!
Emgu CV是英特爾OpenCV影象處理庫的跨平臺.Net包裝器。小編c++學習群825414254獲取c++一整套系統性的學習資料還有數十套pdf
允許從.NET相容語言(如C#,VB,VC ++,IronPython等)呼叫OpenCV函式。包裝器可以在Mono中編譯並在Linux / Mac OS X上執行。與OpenCVDotNet等其他包裝器不同,SharperCV使用不安全的程式碼,Emgu CV 完全用C#編寫。好處是它可以在Mono中編譯,因此能夠在Mono支援的任何平臺上執行,包括Linux,Solaris和Mac OS X.由於標題必須是大量的,因此需要花費很多精力來實現純C#實現。移植,與託管C ++實現相比,可以簡單地包含標頭檔案。但是如果你看到Emora CV在Fedora 10上執行,這是值得的!此外,它始終讓您感到舒適,因為您的程式碼是跨平臺的。
人臉識別
1-建立Windows窗體應用程式
2-新增PictureBox和計時器(並啟用它)
3-在x86系統上執行
4-確保在資料夾中有OpenCV相關dll(包含在Emgu CV下載中)你執行程式碼。
5-調整路徑以找到Haarcascade xml(程式碼的最後一行)
using System;
using System.Windows.Forms;
using System.Drawing;
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
namespace opencvtut
{
public partial class Form1 : Form
{
private Capture cap;
private HaarCascade haar;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
using (Image<Bgr, byte> nextFrame = cap.QueryFrame())
{
if (nextFrame != null)
{
// there’s only one channel (greyscale), hence the zero index
//var faces = nextFrame.DetectHaarCascade(haar)[0];
Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>();
var faces =
grayframe.DetectHaarCascade(
haar, 1.4, 4,
HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new Size(nextFrame.Width/8, nextFrame.Height/8)
)[0];
foreach (var face in faces)
{
nextFrame.Draw(face.rect, new Bgr(0,double.MaxValue,0), 3);
}
pictureBox1.Image = nextFrame.ToBitmap();
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
// passing 0 gets zeroth webcam
cap = new Capture(0);
// adjust path to find your xml
haar = new HaarCascade(
“..\\..\\..\\..\\lib\\haarcascade_frontalface_alt2.xml”);
}
}
}