2

在我的应用程序中,我将实现人脸识别登录...所以我使用 openCV 库来识别人脸...请通过示例代码和教程帮助我做到这一点...。

提前致谢

4

3 回答 3

1

好吧,我和我的同事去年对人脸识别进行了一些调查,这些是我们关于使用集成识别工具与 JavaCV(OpenCV 的 Java 绑定)的一些考虑:

请查看以下教程

  1. Andriod Part-I 上的人脸检测Wayback 链接
  2. Andriod Part-II 上的人脸检测Wayback 链接

希望能帮助到你 :)

于 2012-06-12T07:48:12.860 回答
0

您可以使用 NDK 来使用 C/C++ OpenCV API

文档
初学者教程


void DetectMyFace ()
{
    // image structure in opencv
    IplImage *inImg = 0;
    // face detector classifer 
    CvHaarClassifierCascade *clCascade = 0;
    CvMemStorage *mStorage = 0;
    CvSeq *faceRectSeq;

    inImg = cvLoadImage("2.jpg");

    mStorage = cvCreateMemStorage(0);
    clCascade = (CvHaarClassifierCascade *)cvLoad("haarcascade_frontalface_default.xml", 0, 0, 0);

    if ( !inImg || !mStorage || !clCascade ) 
    {
        printf("Initilization error : %s" , (!inImg)? "cant load image" : (!clCascade)? 
            "cant load haar cascade" : 
            "unable to locate memory storage");

        return;
    }

    faceRectSeq = cvHaarDetectObjects(inImg,clCascade,mStorage,
        1.2,
        3,
        CV_HAAR_DO_CANNY_PRUNING,
        cvSize(25,25));


    const char *winName = "Display Face";
    cvNamedWindow(winName,CV_WINDOW_AUTOSIZE);  

    for ( int i = 0; i < (faceRectSeq ? faceRectSeq -> total:0); i++ )
    {

        CvRect *r = (CvRect*)cvGetSeqElem(faceRectSeq,i);
        CvPoint p1 = { r->x, r->y };
        CvPoint p2 = { r->x + r->width, r->y + r->height };

        cvRectangle(inImg,p1,p2,CV_RGB(0,255,0),1,4,0);     
    }

    cvShowImage(winName, inImg);
    cvWaitKey(0);   

    cvDestroyWindow(winName);

    // release the variables 
    cvReleaseImage(&inImg);
    if(clCascade) cvReleaseHaarClassifierCascade(&clCascade);
    if(mStorage)  cvReleaseMemStorage(&mStorage);
}

于 2012-06-12T07:37:59.500 回答
-1

我已经使用 OpenCV 制作了一个用于人脸识别的 Android 应用程序。你可以看看:https ://github.com/yaylas/AndroidFaceRecognizer

于 2014-06-13T12:58:38.957 回答