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”);
}
}
}