1. 程式人生 > >OpenCV學習筆記(五十五)——用OpenCV做人臉識別和性別識別contrib

OpenCV學習筆記(五十五)——用OpenCV做人臉識別和性別識別contrib

人臉識別的故事說也說不完,調研的事還是交給大家吧。這裡說的是用OpenCV做人臉識別。

因為是真正的人臉識別,不是搞笑娛樂的東西,所以資料庫一定要強大的,推薦個網站http://www.face-rec.org/databases/。這裡有最全的人臉庫的概述,希望大家能找到自己需要的人臉庫(PS:我現在特別需要一個3d的人臉庫,不知道哪位大俠知道如何free獲取,或者願意共享給我那更是極好的了,先謝過咯)。這裡簡單介紹兩個庫,ORL和Yale,ORL是一個輕量級的庫,Yale更為複雜,但並不是免費的。

資料的準備:在我們程式裡需要讀取影象和對應的標籤,這裡採用CSV檔案,是一種簡單的資料互動格式,在我們最常用的Excel裡就支援這種格式。這種格式每條資訊佔一行。資訊格式為:檔名;標籤

,例如C:/ORL/image.jpg;0。只要建立了一個CSV檔案和對應的影象,你就可以對任何一個數據庫進行訓練了。當然,這個CSV檔案並不一定要自己手動的建立,也可以Python指令碼自己生成自己需要的CSV檔案,對應的指令碼為\modules\contrib\doc\facerec\src\create_csv.py,唉,誰讓咱對這個指令碼不熟悉,只能偷懶了,直接調\modules\contrib\doc\facerec\etc\at.txt或者\samples\cpp\facerec_at_t.txt。這個txt對應的是ORL的資料庫,其中的路徑就按照其改一下就好了。

至於人臉識別的具體實現,我已經在blog

OpenCV學習筆記(五十四)——概述FaceRecognizer人臉識別類contrib提到了如何實現。\modules\contrib\doc\facerec\src很多很好的示例,我這裡就不上傳程式碼了。

最後再說一下人臉的標定。因為對Python也不是太熟悉,只給大家一個指令碼檔案吧,是\modules\contrib\doc\facerec\src\crop_face.py,通過這個指令碼可以製作自己需要的人臉圖片大小。

性別識別和視訊中的識別在對應的demo裡都有介紹,我這裡就不詳細說了,因為性別識別無非就是把訓練樣本的標籤只有兩類:男性和女性。需要說明的是,EigenFace是基於PCA的,是一種非監督的模型,不太適合性別識別的任務,這裡的demo用的是FisherFace

。對於視訊的人臉識別,無非就是添加了個VideoCapture和一個人臉檢測的CascadeClassifier。

關於訓練的模型的儲存和呼叫,就是用save和load函式,好簡單的,就不介紹了吧。

最後說一下偽彩色圖的這個函式applyColorMap,其中colorMap引數是用來選擇偽彩色圖的樣式。因為人眼對顏色的敏感的程度要比對亮度的敏感程度要高,所以用偽彩色圖 的對比效果要更好。這才醫學影象處理中用的比較多,以前的B超現在都用彩超了,價格竟然要貴好多,其實就是一個偽彩色處理罷了,醫院真黑啊!!