zoukankan      html  css  js  c++  java
  • 使用 Emgu CV 进行人脸识别

    Face Recognition

    1- Create a Windows Form Application
    2- Add a PictureBox and a Timer (and Enable it)
    3- Run it on a x86 system
    4- Be sure you have the OpenCV relevant dlls (included with the Emgu CV download) in the folder where you code executes.
    5- Adjust the path to find the Haarcascade xml (last line of the code)

     

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

    命名空间简介:

    EmguCV 是一个在 .NET 平台下对 OpenCV 图像处理库进行封装的包,该包通过 C#编写。通过使用 EmguCV,可以实现 .NET 兼容语言(如 C#、VC++、VB、IronPytho等)对 OpenCV 函数的调用。以下是在 C# 中通过 EmguCV 使用 OpenCV 的环境配置方法:

    1. 下载 OpenCV 和 EmguCV,然后进行安装。注意, OpenCV 和 EmguCV 的版本必须一致。可以通过以下方法查看需安装的 OpenCV 版本:先安装 EmguCV,然后查看其安装目录的 bin 目录下的 opencv 动态链接库文件的版本,如 opencv_highgui220.dll 表示是 OpenCV 的版本必须是 2.2。
    2. 在安装 OpenCV 时,如果提示是否须将其 bin 目录加入到系统路径(path)中,选择是,如果没有这个提示,则可通过下面的方法将其 bin 目录加入到系统路径中。
      • 右击桌面上“我的计算机”,选择“属性”,然后在弹出的“属性”对话框中选择“高级”,再点击“环境变量”,在“系统变量”中双击“Path”;
      • 在变量值后加入 “C:\OpenCV2.2\bin”(注意,不同版本的 OpenCV 其 bin 目录也不相同)。
    3. 打开 Visual Studio,新建一个 C# 应用程序。
    4. 通 过菜单 "Project -->Add reference",或在 "Solution Explorer" 中右击工程,选择 “Add reference”,然后在弹出的 “Add reference” 对话框中点击 “Browse”,将 EmguCV 安装目录的 bin 目录下的Emgu.CV.dll、Emgu.Util.dll 和 ZedGraph.dll 都添加到引用里面。
    5. 在程序的开头加上
      using Emgu.CV;
      using Emgu.Util;
      之后就可以使用 EmguCV 中所有的库函数了。

    OpenCV简介 

    如 何在一副图片中检测到人脸,这涉及到计算机图形学中一些非常复杂的计算,如果这些计算都靠程序员自己来编程,那么工作量就相当大。OpenCV全称是 Open Computer Vision,是指开放的计算机视觉资源代码,它具有:统一的结构和功能定义、强大的图像和矩阵运算能力、方便灵活的接口等特点,是计算机视觉、图像处理 和模式识别等方面进行二次开发的理想工具。它可以在各种版本的Windows下运行,也可以在Linux下运行。OpenCV的源代码是用C和C++所编 写且完全开放的,因此具有很好的可移植性,在Microsoft Visual C++ 6.0、Microsoft Visual Studio 2003及Borland C++ BuilderX等环境下均可方便地使用OpenCV所提供的库来进行实际开发。本程序以Visual C++ 2005作为开发环境来介绍。

    一、OpenCV在Visual C++ 2005下的安装与配置

    1.OpenCV安装

    首先到OpenCV的官方网站(http://sourceforge.net/projects/opencvlibrary)下载OpenCV并进行安装,安装过程很简单,只要按照安装向导一步一步进行即可。

    2.对Visual C++ 2005进行全局设置

    1)打开Visual C++ 2005,选择“Tools(工具) | Options(选项)”菜单项,弹出如图1所示的对话框。

    2)在左侧列表框中选择“Projects and Solutions(项目和解决问题方案) | VC++ Directories(VC++目录)”。

    3)在“Show directories for(显示以下内容的目录)”下拉列表框中选择“Library Files(库文件)”。

    4)在右侧库文件列表框中定位并添加“< OpenCV 安装目录>OpenCVlib” 。


    图1

    5)在“Show directories for(显示以下内容的目录)”下拉列表框中选择“Include Files(包含文件)”,并在右侧列表框中定位并添加以下路径:

    < OpenCV 安装目录>OpenCVcxcoreinclude

    < OpenCV 安装目录>OpenCVcvinclude

    < OpenCV 安装目录>OpenCVcvauxinclude

    < OpenCV 安装目录>OpenCVmlinclude

    < OpenCV 安装目录>OpenCVotherlibshighgui

    < OpenCV 安装目录>OpenCVotherlibscvcaminclude

    < OpenCV 安装目录>OpenCVMicrosoft Platform SDKInclude

    ⑥单击OK(确定)按钮保存配置。

  • 相关阅读:
    celery beat之pidfile already exists问题
    HBase源码系列之HFile
    吴裕雄--天生自然 JAVA开发学习:集合框架
    吴裕雄--天生自然 诗经:小池
    吴裕雄--天生自然 诗经:所见
    吴裕雄--天生自然 JAVA开发学习:数据结构
    吴裕雄--天生自然 JAVA开发学习:包(package)
    吴裕雄--天生自然 JAVA开发学习:接口
    吴裕雄--天生自然 JAVA开发学习:封装
    吴裕雄--天生自然 JAVA开发学习:抽象类
  • 原文地址:https://www.cnblogs.com/hxwzwiy/p/2419117.html
Copyright © 2011-2022 走看看