人脸识别系统分析与实现(3)

2019-09-02 18:33

KIA=(p0-pc)/(1-pc)

其中p0=∑xii/N,pc=∑(xi+*x+i)/N2。Xi+是第i行总数,x+i是第i列总数。 行和列是指在交叉表中而言的。

将两种数据进行比对,调整比对精度,再将特征数据与重新提取的数据进行比对,如果二者的差异性在一定范围内,意即KAPPA指数以及其他相似性指数在一定范围内,即可判断为检测成功。

六、程序实现简单人脸识别

由于人脸识别系统是个庞大而复杂的系统,所涉及的学科范围包括计算机图形学、数字图像处理、计算机科学以及地图学(KAPPA指数)等等,使得人脸识别系统利用简单的程序来实现是非常困难的,这里,我将运用简单的代码,利用openCV的知识来实现人脸识别的初步构想,以便读者理解。

1, 运行环境

集成环境:VC6.0,操作系统:windows 7旗舰版,运行环境:openCV

2, C代码

/*test.cpp文件完整代码*/ #include \#include \

#include \#include

staticCvHaarClassifierCascade* cascade = 0; staticCvMemStorage* storage = 0;

voiddetect_and_draw( IplImage* image );

const char* cascade_name =\ //人脸检测要用到的分类器

int _tmain(intargc, _TCHAR* argv[]) {

cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); //加载人脸检测所用的分类器 if( !cascade ) {

fprintf(stderr, \return -1; }

storage = cvCreateMemStorage(0); //动态存储结构,用来存储人脸在图像中的位置 cvNamedWindow( \

11

//const char* filename = \ //待检测图像(包含绝对路径) const char* filename = \景甜.jpg\

IplImage* image = cvLoadImage( filename, 1 ); //加载图像

detect_and_draw( image ); //对加载的图像进行检测 cvWaitKey(0);

cvReleaseImage(&image ); cvDestroyWindow(\return 0; }

voiddetect_and_draw( IplImage* img ) {

staticCvScalar colors[] = {

{{0,0,255}}, {{0,128,255}}, {{0,255,255}}, {{0,255,0}}, {{255,128,0}}, {{255,255,0}}, {{255,0,0}}, {{255,0,255}} };

double scale = 1.3;

IplImage* gray = cvCreateImage(cvSize(img->width,img->height), 8, 1 ); IplImage* small_img = cvCreateImage(cvSize( cvRound (img->width/scale), cvRound (img->height/scale)), 8, 1 );

cvCvtColor(img, gray, CV_BGR2GRAY );

cvResize( gray, small_img, CV_INTER_LINEAR ); cvEqualizeHist(small_img, small_img ); cvClearMemStorage( storage );

if( cascade ) {

/*函数cvHaarDetectObjects检测图像中的目标,由OpenCV提供。*/

CvSeq* faces = cvHaarDetectObjects(small_img, cascade, storage, 1.1, 2, 0 , cvSize(30, 30) );

for(inti = 0; i< (faces ? faces->total : 0); i++ )

12

{

CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); CvPoint center; int radius;

center.x = cvRound((r->x + r->width*0.5)*scale); center.y = cvRound((r->y + r->height*0.5)*scale); radius = cvRound((r->width + r->height)*0.25*scale); cvCircle(img, center, radius, colors[i%8], 3, 8, 0 ); } }

cvShowImage( \cvReleaseImage(&gray );

cvReleaseImage(&small_img ); }

/* stdafx.h文件完整代码*/

// stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 //

//#pragma once

//#define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料

//#include //#include

// TODO: 在此处引用程序需要的其他头文件

/* stdafx.cpp文件完整代码*/

// stdafx.cpp : 只包括标准包含文件的源文件 // FaceDetection.pch 将作为预编译头 // stdafx.obj 将包含预编译类型信息

//#include \

// TODO: 在 STDAFX.H 中

// 引用任何所需的附加头文件,而不是在此文件中引用

13

3, 程序运行结果

处理前:

处理后:

14


人脸识别系统分析与实现(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:繁星春水阅读

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: