2011-10-31 95 views
2

我想使用OpenCV做一些人臉識別(未檢測)的東西。我發現這篇文章有一些代碼:如何使用OpenCV進行人臉識別?

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

然而,這個代碼是使用舊的C風格的OpenCV的API編寫的。是否有人使用OpenCV 2.3.1等更新版本的C++ API版本?

+0

[OpenCV中的人臉識別]的可能的副本(http://stackoverflow.com/questions/4856929/face-recognition-in-opencv) – Kiran

回答

2

我正在使用C++ api爲我的工程師學位做臉部識別項目。我認爲所有關於C++中的人臉識別都相當簡單,甚至比C(更少的指針)更簡單。要使用PCA,您需要一個名爲PCA的類here。只要使用正確的方法並閱讀理解文檔。爲了用輸入數據構建矩陣,我創建了一個適當大小的矩陣,然後將圖片粘貼爲行(使用方法重塑)(cv :: Mat中有一個方法,可以讓您輕鬆獲取矩陣的一行)。你只需要保持確保基礎數據和測試的數據具有相同的參數(通道,大小等)

編輯:

 using namespace cv; //somewhere near top 

將數據插入到數據矩陣:

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

計算PCA:

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

至於OpenCV中的doc使用並不是最好的選擇,花一些時間閱讀並不會傷害到它。大多數c api函數在C++ api中都有它們的等價物,你只需要做一些「寫入搜索窗口並按回車」搜索。而且,在C++中也有教程來掌握C++ api。

+0

您能分享一些代碼嗎? –

9

更新:OpenCV 2.4.2現在帶有非常新的cv::FaceRecognizer。請參閱非常詳細的文檔:

我已經發布libfacerec,一個現代化的人臉識別庫OpenCV的C++ API(BSD許可證)。 libfacerec沒有額外的依賴關係,並實現了特徵臉方法,Fisherfaces方法和局部二值模式直方圖。部分圖書館將被包含在OpenCV 2.4中。

的libfacerec的最新版本,請訪問:

圖書館與即將到來的OpenCV的2.4記住了OpenCV的2.3.1寫的,所以我不支持OpenCV版本早於2.3.1。這個項目是一個CMake項目,具有良好的文檔API,還有一個關於性別分類的教程。

如果你想了解這些算法是如何工作的,你可能想要看我的指南人臉識別(包括Python和GNU八度:您可以看到文檔的HTML版本/ MATLAB示例):

的相對前列出版物是:

  • Turk,M.,和Pentland,A。用於識別的特徵臉。。 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.和Pietikainen,M。帶局部二元模式的人臉識別。。 Computer Vision - ECCV 2004(2004),469-481。