• Open Source Computer Vision Library

人臉檢測與識別軟體包

Wikipedia,自由的百科全书

ARM平台上运行的人脸检测和人脸识别
Enlarge
ARM平臺上運行的人臉檢測和人臉識別

目錄

人臉檢測嵌入式演算法(ARM, TI DSP)軟體包

Haar+AdaBoost是目前最為成熟的人臉檢測演算法,OpenCV提供的Cascade Classifier為浮點運算,無法在不支持硬體浮點的嵌入式設備上實現實時人臉檢測。本人臉檢測軟體包有如下優點:

定點運算
可在嵌入式設備上實現實時人臉檢測(ARM9 400MHz,320x240圖像,每秒可處理3-4幀;在TI DSP上通過並行運算,可達到25FPS)。
代碼簡煉
去除了OpenCV中所有跟人臉檢測無關的所有代碼,並對代碼進行了優化。
API與OpenCV相容
函數名也為cvHaarDetectObjects,參數基本相同。
級聯分類器與OpenCV相容
軟體包提供了API,能自動將OpenCV格式(XML格式)的浮點級聯分類器轉為定點分類器。
通過使用其他分類器,可以實現人眼檢測,側臉檢測等其他物體檢測
使用網上的開源分類器(XML文件),或者自己訓練的分類器來檢測各種物體。

人臉檢測API

CvSeq* cvHaarDetectObjects( const CvArr* image,
                     CvHaarClassifierCascade* cascade,
                     CvMemStorage* storage, int scale_factor32x =36,
                     int min_neighbors = 3, int flags = 0,
                     CvSize min_size =cvSize(0,0) );

人臉識別演算法軟體包

演算法原理:採用人臉紋理統計特征對人臉進行識別。

用戶可選用PC(浮點)版本或嵌入式(定點)版本
用戶可根據自己的需求選擇
人眼定位的關鍵步驟“人眼檢測”的分類器已經提交到OpenCV
如果用戶僅僅對人眼檢測(粗定位)感興趣,可不必購買軟體包,直接下載左眼和右眼的分類器使用OpenCV調用則可:左眼 http://opencvlibrary.svn.sourceforge.net/viewvc/opencvlibrary/trunk/opencv/data/haarcascades/haarcascade_lefteye_2splits.xml 右眼 http://opencvlibrary.svn.sourceforge.net/viewvc/opencvlibrary/trunk/opencv/data/haarcascades/haarcascade_righteye_2splits.xml

人臉識別軟體包API

class CFaceRecogn
{
	public:
		/*
		   false: 不在臉上畫矩形框
		   true: 在臉上畫矩形框
		*/
		bool m_bShowRectOnFace; //default value is false;
 
		/*
		  sDBDir會直接傳給LoadFaceDB()函數,此參數的說明請參考LoadFaceDB()函數
		*/
 
		CFaceRecogn(char * sDBDir=NULL);
		~CFaceRecogn();
 
		/*
		  重新從硬碟裝載人臉數據,裝載前會自動釋放上次裝載的數據,
		  本函數會在構造函數中調用,所以只有在重新註冊了新數據後,才有必要調用此函數
 
		  如果sDBDIR的值為NULL,那麼則會使用預設目錄:當前目錄下的"facedb"目錄;
		  否則從指定人臉庫目錄下裝載數據;
		  支持相對路徑和絕對路徑。
 
		  ************classifier目錄必須跟facedb目錄併列,位於同一目錄下************  
 
		  返回值是成功裝載的人數(非特征樣本總數,特征樣本數大於人數)
		*/
		int LoadFaceDB(char * sDBDir=NULL);
 
		/*
		  獲取當前人臉資料庫所在目錄
		*/
		const char * GetFaceDBDir();
 
 
 
		/*
		  從pImage里檢測人臉的位置,並將此人臉註冊,註冊的名字為sName
		  如果圖像中不存在人臉(或未檢測到符合標準的臉),返回值為{0,0,0,0}
		  如果存在>=1副人臉,不註冊,切返回值為{-n,-n,-n,-n},n是圖像中臉的個數
 
		  pImage: BGR圖像,輸入
		  sName: 最大長度為128位元組,輸入
		  sFaceFile: 保存在硬碟上的人臉小圖片文件名,為輸出變數
		*/
		CvRect DetectRegisterFace(IplImage *pImage, char * sName, char * sOriFaceFile=NULL);
 
		/*
		  從pImage里檢測人臉的位置,並識別此人臉,人臉的名字返回到sName中
		  如果圖像中不存在人臉(或未檢測到符合標準的臉),返回值{0,0,0,0}
		  如果存在>=1副人臉,隨機選擇一副識別並返回臉的位置
 
		  pImage: BGR image
		  sName: buffer,此變數存儲人名。如果圖像中無臉,或有臉但無法識別,則返回空字元串
		  返回值:如果有>=1副人臉,則從中選擇認識的人臉並返回該臉位置,如果無認識的臉則返回{0,0,0,0}
				  如果沒有人臉,則返回{0,0,0,0}
		*/
		CvRect RecognizeFace(IplImage *pImage, char *sName);
 
};

軟體包提供方式

本軟體包以有償方式提供。為滿足不同用戶的需求,軟體包以如下三種方式提供。

提供方式 允許拷貝份數 價格 備註
有限使用的二進位庫 200,超過200份拷貝需要額外付費 低(約 X萬元) 適合產品的前期開發
無限使用的二進位庫 無限 中(約 1x萬元) 適合在大量產品中使用
全部源代碼(C語言) 無限 高(約 XX萬元) 擁有無限制複製,並修改源代碼的權力。

聯繫方式

  • 單位:中科院深圳先進技術研究院(http://www.siat.ac.cn)
  • 聯繫人email:sq.yu (at) siat.ac.cn (請將前面的(at)替換為@)
Views