用visual studio 2012和opencv248实现人脸检测
来源:互联网 发布:java输出语句换行 编辑:程序博客网 时间:2024/06/11 05:09
用visual studio 2012、opencv248实现人脸检测
一、保证你的visual studio 2012 和 opencv248配置成功,且可以显示图像。
若不能,可以参考这个网站。
二、新建一个项目,步骤如下:
1.文件>新建>项目:
2.把里面的代码删掉。
三、把如下代码粘贴进去。
// facedetectionMine.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include <opencv2\opencv.hpp>#include "cv.h" #include "highgui.h" using namespace std;using namespace cv;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_name, 0, 0, 0 ); //加载人脸检测所用的分类器 if( !cascade ) { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); getchar(); return -1; } storage = cvCreateMemStorage(0); cvNamedWindow( "result", 1 ); //待检测图像(包含绝对路径) IplImage* image = cvLoadImage( "1.jpg", -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; 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( "result", img ); cvReleaseImage( &gray ); cvReleaseImage( &small_img );}
四、找张有一个正面人脸的照片,命名为:1.jpg,放在之前可以显示照片的地方。
去opencv找到名为 haarcascade_frontalface_alt.xml 的文件,把它放在与照片同一个目录下。
五、运行。
六、若出现:error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
方法:
在红色方框里加入:
/D “_CRT_SECURE_NO_DEPRECATE”
必须完整。
七、若出现:ConsoleApplication3.obj : error LNK2019: 无法解析的外部符号 _cvHaarDetectObjects,该符号在函数 “void __cdecl detect_and_draw(struct _IplImage *)” (?detect_and_draw@@YAXPAU_IplImage@@@Z) 中被引用
那是你的附加依赖项没把要用的 .lib 文件包含好。
可以尝试都包含,可以在“opencv路径\build\x86\vc11\lib”找到所有的.lib 文件的名字。 下面仅供参考:
opencv_calib3d248d.lib
opencv_contrib248d.lib
opencv_core248d.lib
opencv_features2d248d.lib
opencv_flann248d.lib
opencv_gpu248d.lib
opencv_highgui248d.lib
opencv_imgproc248d.lib
opencv_legacy248d.lib
opencv_ml248d.lib
opencv_objdetect248d.lib
opencv_ts248d.lib
opencv_video248d.lib
八、效果如下:
九、若还是不怎么懂的,可以 参考一下这个网站。
- 用visual studio 2012和opencv248实现人脸检测
- Visual Studio 2012 和 SVN 结合实现版本控制 AnkhSvn
- Visual Studio 2012 和 SVN 结合实现版本控制 AnkhSvn
- win10的visual studio 2015 安装opencv3.1,并且编写demo人脸检测
- 在Android Studio中实现OpenCV人脸检测
- Visual Studio 2012和.NET Framework 4.5
- 坑人的Visual Assist 和 Visual Studio 2012
- Visual Studio 2012 - Visual C++ Pragma 指令和 __Pragma 关键字
- VISUAL STUDIO 检测内存泄露 (FROM MSDN)
- visual studio内存泄露检测方法
- C++内存泄露检测(Visual studio 2010)
- 堆异常检测-MS-Visual Studio
- visual studio: 检测类型是否完整
- Visual Studio 2008 C++ 内存泄露检测
- 用 Visual Studio.NET 和 Visual SourCESafe 进行团队开发
- 用 Visual Studio.NET 和 Visual SourceSafe 进行团队开发
- Visual Studio 和 SVN 结合实现版本控制
- OpenCV 2.3.x/2.4.x在Visual Studio 2005/2008、Visual Studio 2010和Visual Studio 2012配置方法详解
- 论新时代软件测试人员的工作之道(三)让Code Review常态化
- 黑马程序员---C语言中字符串的输入
- poj1308
- MD5的自己的理解
- Windows Phone 学习 直接用url打开web浏览器
- 用visual studio 2012和opencv248实现人脸检测
- 如何使用xib封装一个view
- python应用_恺撒密码加密与解密
- 每天一个linux命令(35):ln 命令
- ORA-12154: TNS: 无法解析指定的连接标识符
- 免费无限空间代码托管服务器/svn服务器
- 如何使用代理
- mysql下载和安装
- 贪心(bnuoj49103+二分+贪心)