程序员

C/C++人脸识别功能,C++再次走上巅峰!

2019-03-02  本文已影响2人  Python编程导师

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

}

}

}

上一篇下一篇

猜你喜欢

热点阅读