PCA人脸识别--opencv代码

在学习PCA时,在网上搜到基于VS+OPENCV实现的相关代码http://blog.csdn.net/vsooda/article/details/7544956,发现其中的loadFaceImgArray函数有错误,然后对其进行了修改,主要代码如下:

//加载txt文件的列举的图像  
int loadFaceImgArray(char * filename)
{
    ifstream imgListFile(filename);
    string imgFilename;
    int iFace, nFaces = 0;


    if (!imgListFile)
    {
        fprintf(stderr, "Can\'t open file %s\n", filename);
        return 0;
    }

    // 统计人脸数  

    while (getline(imgListFile,imgFilename)) ++nFaces;

    cout << "*******************************" << endl;

    // 分配人脸图像存储空间和人脸ID号存储空间  
    faceImgArr = (IplImage **)cvAlloc(nFaces*sizeof(IplImage *));
    personNumTruthMat = cvCreateMat(1, nFaces, CV_32SC1);

    // 返回文件首位置
    imgListFile.clear();
    imgListFile.seekg(0);

    for (iFace = 0; iFace// 从文件中读取序号和人脸名称  
        getline(imgListFile, imgFilename);
        cout << imgFilename << endl;

        //加载人脸图像  
        faceImgArr[iFace] = cvLoadImage(imgFilename.data(), CV_LOAD_IMAGE_GRAYSCALE);
        *(personNumTruthMat->data.i + iFace) = iFace;
        if (!faceImgArr[iFace])
        {
            fprintf(stderr, "Can\'t load image from %s\n", imgFilename);
            return 0;
        }
        cvNamedWindow("demo", CV_WINDOW_AUTOSIZE);
        cvShowImage("demo", faceImgArr[iFace]);
        cvWaitKey(100);
    }
    imgListFile.close();

    return nFaces;
}

具体效果如下

PCA人脸识别--opencv代码_第1张图片

全部代码:http://download.csdn.net/detail/swj110119/9877922

你可能感兴趣的:(图像处理opencv,PCA,人脸识别)