opencv人脸识别2

来源:互联网 发布:广东英特讯软件科技 编辑:程序博客网 时间:2024/06/10 00:11

这几天太热了,希望可以下场降温雨!

上次的人脸识别,每次只能识别一个人脸,这次的可以识别多个人脸。

代码如何:

#include <opencv2/opencv.hpp>  #include <cstdio>  #include <cstdlib>  #include <Windows.h>  using namespace std;int main(){// 加载Haar特征检测分类器  // haarcascade_frontalface_alt.xml系OpenCV自带的分类器 下面是我机器上的文件路径  const char *pstrCascadeFileName = "haarcascade_frontalface_alt.xml";CvHaarClassifierCascade *pHaarCascade = NULL;pHaarCascade = (CvHaarClassifierCascade*)cvLoad(pstrCascadeFileName);// 载入图像  //cv::VideoCapture camera(0);//打开摄像头cv::VideoCapture camera("少女时代 - OH! - 日文版.avi");//载入视频//const char *pstrImageName = "style4.jpg";//IplImage *pSrcImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);while (1){cv::Mat frame;camera >> frame;IplImage  *pSrcImage;pSrcImage = &IplImage(frame);IplImage  *pGrayImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1);cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY);// 人脸识别与标记  if (pHaarCascade != NULL){CvScalar FaceCirclecolors[] ={(0, 255, 255),(0, 255, 0),(255, 128, 0),(255, 255, 0),(255, 0, 0),(255, 0, 255),(0, 0, 255),(0, 128, 255)};CvMemStorage *pcvMStorage = cvCreateMemStorage(0);cvClearMemStorage(pcvMStorage);// 识别  DWORD dwTimeBegin, dwTimeEnd;dwTimeBegin = GetTickCount();CvSeq *pcvSeqFaces = cvHaarDetectObjects(pGrayImage, pHaarCascade, pcvMStorage);dwTimeEnd = GetTickCount();printf("人脸个数: %d   识别用时: %d ms\n", pcvSeqFaces->total, dwTimeEnd - dwTimeBegin);// 标记  for (int i = 0; i < pcvSeqFaces->total; i++){CvRect* r = (CvRect*)cvGetSeqElem(pcvSeqFaces, i);CvPoint center;int radius;center.x = cvRound((r->x + r->width * 0.5));center.y = cvRound((r->y + r->height * 0.5));radius = cvRound((r->width + r->height) * 0.25);cvCircle(pSrcImage, center, radius, FaceCirclecolors[i % 8], 2);}cvReleaseMemStorage(&pcvMStorage);}const char *pstrWindowsTitle = "人脸识别";cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);cvShowImage(pstrWindowsTitle, pSrcImage);if (cvWaitKey(30) >= 0)  break;//延时30ms//cvWaitKey(0);}//cvDestroyWindow(pstrWindowsTitle);//cvReleaseImage(&pSrcImage);//cvReleaseImage(&pGrayImage);return 0;}
结果截图:



1 0
原创粉丝点击