How to do Face Recognition using OpenCV? [closed]

回眸只為那壹抹淺笑 提交于 2019-12-03 11:22:14

问题


I am trying to do some Face Recognition (not detection) stuff using OpenCV. I found this article with some code:

http://www.cognotics.com/opencv/servo_2007_series/index.html

However, this code is written using the older C-style OpenCV API. Does someone have a C++ API version of this using a more recent version like OpenCV 2.3.1?


回答1:


I'm doing a face recognition project for my engineer's degree, using c++ api. I think that everything regarding face recognition in c++ is fairly straightforward, even simpler than in C (less pointers). To use PCA you have a class named PCA described here. Just use the proper methods and read documentation with understanding. To build the matrix with input data I've created a matrix of proper size, then pasted pictures as rows (use method reshape) into it (there is a method in cv::Mat that lets you to get easily a row of a matrix). You just need to keep sure that base data and tested data have the same parameters (channels, size,etc.)

EDIT:

     using namespace cv; //somewhere near top

inserting data to data matrix:

    62       Mat reshaped=img.reshape(1,1);
    63       Mat dataRow=_data.row(y++);
    64       resize(reshaped,dataRow,dataRow.size(),0,0,CV_INTER_LINEAR);

computing pca:

    251 _pca(_data,Mat(),CV_PCA_DATA_AS_ROW); //compute pca 
    252 _pca.project(_data,_vectors); // project original data to new coordinates

As opencv's documentation isn't the best out there, it doesn't hurt to spend some time reading it. Most of the c api functions have their equivalents in c++ api, You only need to do some "write into search window and hit enter" searching. And, there are also tutorials in c++ to get a grip of the c++ api.




回答2:


Update: OpenCV 2.4.2 now comes with the very new cv::FaceRecognizer. Please see the very detailed documentation at:

  • http://docs.opencv.org/trunk/modules/contrib/doc/facerec/index.html

I have released libfacerec, a modern face recognition library for the OpenCV C++ API (BSD license). libfacerec has no additional dependencies and implements the Eigenfaces method, Fisherfaces method and Local Binary Patterns Histograms. Parts of the library are going to be included in OpenCV 2.4.

The latest revision of the libfacerec is available at:

  • https://github.com/bytefish/libfacerec

The library was written for OpenCV 2.3.1 with the upcoming OpenCV 2.4 in mind, so I don't support OpenCV versions earlier than 2.3.1. This project comes as a CMake project with a well-documented API, there's also a tutorial on gender classification. You can see a HTML version of the documentation at:

  • http://www.bytefish.de/dev/libfacerec/

If you want to understand how those algorithms work, you might want to read my Guide To Face Recognition (includes Python and GNU Octave/MATLAB examples):

  • http://www.bytefish.de/blog/face_recognition_with_opencv2

The relevant publications are:

  • Turk, M., and Pentland, A. Eigenfaces for recognition.. Journal of Cognitive Neuroscience 3 (1991), 71–86.
  • Belhumeur, P. N., Hespanha, J., and Kriegman, D. Eigenfaces vs. Fisherfaces: Recognition using class specific linear projection.. IEEE Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), 711–720.
  • Ahonen, T., Hadid, A., and Pietikainen, M. Face Recognition with Local Binary Patterns.. Computer Vision - ECCV 2004 (2004), 469–481.


来源:https://stackoverflow.com/questions/7949494/how-to-do-face-recognition-using-opencv

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!