其实,这些代码都是《学习Opencv》这本书上的。
转自:http://www.cnblogs.com/ma6174/archive/2013/03/31/2991315.html
这个博客的Python代码是用CV写的,而我的是cv2,改过来之后有各种错误。
opencv写的这个有调用摄像头的部分,第一次运行的时候好像能行,但是之后就没结果了。
// face_detection.cpp : 定义控制台应用程序的入口点。
//
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>
#ifdef _EiC
#define WIN32
#endif
static CvMemStorage* storage = 0;
static CvHaarClassifierCascade* cascade = 0;
void detect_and_draw(IplImage* image);
const char* cascade_name =
"haarcascade_frontalface_alt.xml";
/* "haarcascade_profileface.xml";*/
int main(int argc, char** argv)
{
CvCapture* capture = 0;
IplImage *frame, *frame_copy = 0;
int optlen = strlen("--cascade=");
const char* input_name;
if (argc > 1 && strncmp(argv[1], "--cascade=", optlen) == 0)
{
cascade_name = argv[1] + optlen;
input_name = argc > 2 ? argv[2] : 0;
}
else
{
cascade_name = "haarcascade_frontalface_alt2.xml";
//opencv装好后haarcascade_frontalface_alt2.xml的路径,
//也可以把这个文件拷到你的工程文件夹下然后不用写路径名cascade_name= "haarcascade_frontalface_alt2.xml";
//或者cascade_name ="C:\Program Files\OpenCV\data\haarcascades\haarcascade_frontalface_alt2.xml"
input_name = argc > 1 ? argv[1] : 0;
}
cascade = (CvHaarClassifierCascade*)cvLoad(cascade_name, 0, 0, 0);
if (!cascade)
{
fprintf(stderr, "ERROR: Could not load classifier cascade
");
fprintf(stderr,
"Usage: facedetect --cascade="<cascade_path>" [filename|camera_index]
");
return -1;
}
storage = cvCreateMemStorage(0);
if (!input_name || (isdigit(input_name[0]) && input_name[1] == '