教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

基于VC的图像采集与人脸定位门禁控制系统(6)

来源:网络收集 时间:2026-02-26
导读: 西安工业大学北方信息工程学院毕业设计(论文) 图5.4.1 创建以下win32 console application程序进行测试。 #include #include #include int main(int argc, char *argv[]) { IplImage *img = cvLoadImage(\ cvName

西安工业大学北方信息工程学院毕业设计(论文)

图5.4.1

创建以下win32 console application程序进行测试。 #include #include #include

int main(int argc, char *argv[]) {

IplImage *img = cvLoadImage(\ cvNamedWindow(\ cvShowImage(\

17

西安工业大学北方信息工程学院毕业设计(论文)

cvWaitKey();

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

如果能够编译链接成功,则说明配置成功。 编译成功后开始创建工程步骤如下:

1.打开Visual C++ 6.0,创建一个“Win32 Console Application”类型的工程,工程名称取“test”,单击“确定”,然后单击“完成”,结束应用程序创建。 2.

?\\OpenCV\\data\\haarcascades

haarcascade_frontalface_alt.xml复制到工程目录文件夹中。其中,?\\OpenCV为OpenCV的安装目录,数据文件haarcascade_frontalface_alt.xm为人脸检测时所用到得分类器。 3.源程序代码如下: /*test.cpp文件完整代码*/ #include \#include \#include \#include

static CvHaarClassifierCascade* cascade = 0; static CvMemStorage* storage = 0;

void detect_and_draw( IplImage* image ); const

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

cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0,

char*

cascade_name

//人脸检测要用到的分类器

=\

18

西安工业大学北方信息工程学院毕业设计(论文)

0 ); //加载人脸检测所用的分类器

if( !cascade ) {

fprintf( stderr, \Could not load classifier cascade\\n\); return -1; } storage

=

//动态存储结构,用来存储人脸在图像中的位置 cvNamedWindow( \ //const

char*

filename

=

//待检测图像(包含绝对路径)

const char* filename = \景甜.jpg\

image

=

cvLoadImage(

image

filename,

1

IplImage* //加载图像

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

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

void detect_and_draw( IplImage* img ) {

static CvScalar colors[] = {

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

19

cvCreateMemStorage(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( int i = 0; i < (faces ? faces->total : 0); i++ ) {

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( \

20

西安工业大学北方信息工程学院毕业设计(论文)

cvReleaseImage( &gray );

cvReleaseImage( &small_img ); }

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

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

#pragma once

#define WIN32_LEAN_AND_MEAN #include #include

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

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

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

#include \

// TODO: 在 STDAFX.H 中

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

4.编译工程

在编译前,将要进行人脸检测的图片放到工程目录下,图片的名称要与代码中的名称对应。如:const char* filename = \待检测图像(包含绝对路径)

21

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

…… 此处隐藏:981字,全部文档内容请下载后查看。喜欢就下载吧 ……
基于VC的图像采集与人脸定位门禁控制系统(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/403070.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)