基于 Visual C++ MFC 项目的 OpenCV 实现人脸检测
2009-11-24 23:25
1.利用 OpenCV 进行人脸检测
人脸检测程序主要完成 3 部分功能,即加载分类器、加载待检测图象以及
检测并标示。本程序使用 OpenCV 中提供的
“haarcascade_frontalface_alt.xml”文件存储的目标检测分类,用 cvLoad
函数载入后,进行强制类型转换。OpenCV 中提供的用于检测图像中目标的函
数是 cvHaarDetectObjects,该函数使用指针对某目标物体(如人脸)训练
的级联分类器在图象中找到包含目标物体的矩形区域,并将这些区域作为一序
列的矩形框返回。分类器在使用后需要被显式释放,所用的函数为
cvReleaseHaarClassi%erCascade。这些函数原型请参看有关 OpenCV 手
册。
2.程序实现
1)新建一个 Visual C++ MFC 项目,取名为“FaceDetection”,选择应
用程序类型为“单文档”。将菜单中多余的项去掉,并添加一项“人脸检测”,其
ID 为“ID_FaceDetected”,并生成该菜单项的消息映射函数。
2)在“FaceDetectionView.h”头文件中添加以下灰底色部分程序代码:
//南京森林公安高等专科学校 江林升
// FaceDetectionView.h : CFaceDetectionView 类的接口
#pragma once
#include "cv.h"
#include "highgui.h"
class CFaceDetectionView : public CView
{
protected: // 仅从序列化创建
CFaceDetectionView();
DECLARE_DYNCREATE(CFaceDetectionView)
// 属性
public:
CFaceDetectionDoc* GetDocument() const;
CvHaarClassi%erCascade* cascade;//特征器分类
CvMemStorage* storage;
void detect_and_draw( IplImage* img );
IplImage* src; //载入的图像
在“FaceDetectionView.cpp”文件中添加以下灰底色部分程序代码:
// FaceDetectionView.cpp : CFaceDetectionView 类的实现
#include "stdafx.h"