利用OpenCV检测图像中的人脸.docx

上传人:牧羊曲112 文档编号:3329629 上传时间:2023-03-12 格式:DOCX 页数:7 大小:39KB
返回 下载 相关 举报
利用OpenCV检测图像中的人脸.docx_第1页
第1页 / 共7页
利用OpenCV检测图像中的人脸.docx_第2页
第2页 / 共7页
利用OpenCV检测图像中的人脸.docx_第3页
第3页 / 共7页
利用OpenCV检测图像中的人脸.docx_第4页
第4页 / 共7页
利用OpenCV检测图像中的人脸.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《利用OpenCV检测图像中的人脸.docx》由会员分享,可在线阅读,更多相关《利用OpenCV检测图像中的人脸.docx(7页珍藏版)》请在三一办公上搜索。

1、利用OpenCV检测图像中的人脸利用OpenCV检测图像中的人脸 工程创建准备: 1. 安装Visual C+ 6.0或以上版本,本机安装Visual C+ 6.0 2. 安装OpenCV及配置 OpenCV 1.0在VC6下安装与配置 参考网站: 安装OpenCV 下载OpenCV安装程序。假如要将OpenCV安装到C:Program FilesOpenCV。在安装时选择将OpenCVbin加入系统变量。 配置Windows环境变量 检查C:Program FilesOpenCVbin是否已经被加入到环境变量PATH,如果没有,请加入。 选择高级选项,然后选择“环境变量”,查看是否加入,如果

2、没有则将其加入 加入后,在任务管理器里重启explorer.exe 配置Visual C+ 6.0 全局设置 菜单Tools(工具)-Options-Directories:先设置lib路径,选择Library files,在下方填入路径: C:Program FilesOpenCVlib 然后选择include files,在下方填入路径: C:Program FilesOpenCVcxcoreinclude C:Program FilesOpenCVcvinclude C:Program FilesOpenCVcvauxinclude C:Program FilesOpenCVmlincl

3、ude C:Program FilesOpenCVotherlibshighgui C:Program FilesOpenCVotherlibscvcaminclude 然后选择source files,在下方填入路径: C:Program FilesOpenCVcvsrc C:Program FilesOpenCVcxcoresrc C:Program FilesOpenCVcvauxsrc C:Program FilesOpenCVotherlibshighgui C:Program FilesOpenCVotherlibscvcamsrcwindows 最后点击“ok”,完成设置。 在V

4、isual C+ 6.0下创建使用OpenCV的VC Project 正常启动Visual C+ 6.0,并创建project。 项目设置 每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project-Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上 cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib 如果你不需要这么多lib,你可以只添加你需要的lib。 创建以下win3

5、2 console application程序进行测试。 #include #include #include int main(int argc, char *argv) IplImage *img = cvLoadImage(lena.jpg); cvNamedWindow(Image:, 1); cvShowImage(Image:, img); cvWaitKey; cvDestroyWindow(Image:); cvReleaseImage(&img); return 0; 如果能够编译链接成功,则说明配置成功,否则检查前面的配置步骤。 开始创建工程 1, 打开Visual C+

6、6.0,创建一个“Win32 Console Application”类型的工程,工程名称取“test”,单击“确定”,然后单击“完成”,结束应用程序创建。 2, 将OpenCVdatahaarcascades目录下的数据文件haarcascade_frontalface_alt.xml复制到工程目录文件夹中。其中,OpenCV为OpenCV的安装目录,数据文件haarcascade_frontalface_alt.xm为人脸检测时所用到得分类器。 3, 源程序代码如下: /*test.cpp文件完整代码*/ #include stdafx.h #include cv.h #include h

7、ighgui.h #include static CvHaarClassifierCascade* cascade = 0; static CvMemStorage* storage = 0; void detect_and_draw( IplImage* image ); const char* cascade_name =haarcascade_frontalface_alt.xml; /人脸检测要用到的分类器 int _tmain(int argc, _TCHAR* argv) cascade = (CvHaarClassifierCascade*)cvLoad( cascade_nam

8、e, 0, 0, 0 ); /加载人脸检测所用的分类器 if( !cascade ) fprintf( stderr, ERROR: Could not load classifier cascaden ); return -1; storage = cvCreateMemStorage(0); /动态存储结构,用来存储人脸在图像中的位置 cvNamedWindow( result, 1 ); /const char* filename = lena.jpg; 图像(包含绝对路径) const char* filename = 景甜.jpg; IplImage* image = cvLoadI

9、mage( filename, 1 ); detect_and_draw( image ); 载的图像进行检测 cvWaitKey(0); cvReleaseImage( &image ); cvDestroyWindow(result); 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, 255,0,255 ; double scale = 1.3; Ipl

10、Image* 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,

11、 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 total : 0); i+ ) CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); CvPoint center; int

12、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, colorsi%8, 3, 8, 0 ); cvShowImage( result, img ); cvReleaseImage( &gray ); cvReleaseImage( &small_img ); /* stdafx.h文件

13、完整代码*/ / stdafx.h : 标准系统包含文件的包含文件, / 或是经常使用但不常更改的 / 特定于项目的包含文件 / #pragma once #define WIN32_LEAN_AND_MEAN / 从 Windows 头中排除极少使用的资料 #include #include / TODO: 在此处引用程序需要的其他头文件 /* stdafx.cpp文件完整代码*/ / stdafx.cpp : 只包括标准包含文件的源文件 / FaceDetection.pch 将作为预编译头 / stdafx.obj 将包含预编译类型信息 #include stdafx.h / TODO:

14、 在 STDAFX.H 中 / 引用任何所需的附加头文件,而不是在此文件中引用 4, 项目配置 每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project-Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上 cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib 如果你不需要这么多lib,你可以只添加你需要的lib。 5, 编译工程 在编译前,将要进行人脸检测的图片放到工程目录下,图片的名称要与代码中的名称对应。如:const char* filename = 景甜.jpg;/待检测图像(包含绝对路径) 一切准备就绪,编译并连接工程,运行生成的文件。效果如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号