zoukankan      html  css  js  c++  java
  • opencv 利用Haar 人脸识别

    #include <opencv2/opencv.hpp>
    #include <cstdio>
    #include <cstdlib>
    #include <iostream>
    #include <Windows.h>  
    using namespace std;
    int main()
    {
        // 加载Haar特征检测分类器
        // haarcascade_frontalface_alt.xml系OpenCV自带的分类器 下面是我机器上的文件路径
        const char *pstrCascadeFileName = "D:\opencv\opencv2.4.10\opencv\sources\data\haarcascades\haarcascade_frontalface_alt.xml";
        CvHaarClassifierCascade *pHaarCascade = NULL;
        pHaarCascade = (CvHaarClassifierCascade*)cvLoad(pstrCascadeFileName);
    
        // 载入图像
        const char *pstrImageName = "D:\721.jpg";
        IplImage *pSrcImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
        
        IplImage *pGrayImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1);
        cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY);
    
        // 人脸识别与标记
        if (pHaarCascade != NULL)
        {        
            CvScalar FaceCirclecolors[] = 
            {
                {{0, 0, 255}},
                {{0, 128, 255}},
                {{0, 255, 255}},
                {{0, 255, 0}},
                {{255, 128, 0}},
                {{255, 255, 0}},
                {{255, 0, 0}},
                {{255, 0, 255}}
            };
    
            CvMemStorage *pcvMStorage = cvCreateMemStorage(0);
            cvClearMemStorage(pcvMStorage);
            DWORD dwTimeBegin, dwTimeEnd;
            dwTimeBegin = GetTickCount();
            CvSeq *pcvSeqFaces = cvHaarDetectObjects(pGrayImage, pHaarCascade, pcvMStorage);
            dwTimeEnd = GetTickCount();
    
            printf("人脸个数: %d   识别用时: %d ms
    ", 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);
    
        cvWaitKey(0);
    
        cvDestroyWindow(pstrWindowsTitle);
        cvReleaseImage(&pSrcImage);    
        cvReleaseImage(&pGrayImage);
        return 0;
    }
  • 相关阅读:
    laravel实践2.引入bootstrap
    laravel实践3.laravel Mix使用
    利用nginx 反向代理解决跨域问题
    前端压缩图片记录一下
    蒲文强java第 七 次作业
    蒲文强java第六次作业
    192403蒲文强——面向对象第五次作业
    浅析学习关于《现代软件工程——构建之法》第一章的总结
    第四次作业----两人结对编程
    第四次博客作业-结对项目
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4216560.html
Copyright © 2011-2022 走看看