OpenCV之識別自己的臉——C++源碼放送

OpenCV之識別自己的臉——C++源碼放送

前言

在將近一年之前,我在CSDN專欄《OpenCV實踐之路》中連續發了三篇博客,完整地描述了基於OpenCV進行人臉識別的全過程。三篇都將近一萬的閱讀量和大量的評論的表明,人臉識別果然是大家在學習OpenCV過程中最感興趣的課題,之一。當然,也有可能是本科生畢設老師最感興趣的課題之一。。。

由於當時寫的時候是按照前後流程來的,所以源碼比較分散。加之我想當然地認爲,很多源碼是之前博客中已經放出來的,可以一句帶過。這導致了很多同學學習的時候很不方面。但是我由於重裝系統,導致當初的源碼遺失,也一直沒有抽出時間去重新整理一下。這個清明節,沒有出門,根據之前的博客基於當下最新的OpenCV3.2重新整理了一遍源碼。現在放出來,以饗讀者。

小小的區別

當然了,重新整理也不是簡單的把源碼收集到一起,如果真的那麼簡單,也就不用去整理了,大家自行收集即可。因爲OpenCV3.2人臉識別的內容也是有些小變動。所以現在的代碼跟原來的三篇博客仍然是統一的,但是有一些細節不同。

1. 自動拍照

之前採集自己的圖像的時候,程序設定是運行之後按’p’鍵拍照並保存圖像,然後需要自己手動的去把圖像大小轉化爲跟ORL人臉數據庫中的圖片大小一樣。

現在一切自動,只需要運行即可拍照,變化尺寸,並保存。默認設定拍10張照片,與ORL人臉數據庫一致。

2. Python腳本生成at.txt

當時寫博客的時候還不會用Python,所以生成的at.txt並不是s1文件夾對應的label就是1,s2就對應2。而是比較混亂的。誰是誰需要自己去記憶。

經過修改後的Python腳本可以是文件夾可label完美對應起來了

3. 訓練代碼

訓練人臉識別模型的代碼部分有些改動,主要是因爲OpenCV的變動。

  • 頭文件和命名空間需要各加一句:

    #include<opencv2\face.hpp>

    using namespace cv::face;

  • 創建模型部分的改變,原來的代碼是
    Ptr<FaceRecognizer> model = createEigenFaceRecognizer();

    Ptr<FaceRecognizer> model1 = createFisherFaceRecognizer();

    Ptr<FaceRecognizer> model2 = createLBPHFaceRecognizer();

    現在改爲:
    Ptr<BasicFaceRecognizer> model = createEigenFaceRecognizer();
    Ptr<BasicFaceRecognizer> model1 = createFisherFaceRecognizer();
    Ptr<LBPHFaceRecognizer> model2 = createLBPHFaceRecognizer();

其餘部分沒有太大變化。

下載辦法

源碼已經分別上傳到Github、百度網盤。其中github由於大小限制,不含我訓練好的模型。

Github:`https://github.com/LiuXiaolong19920720/recognise-your-own-face

百度網盤:網盤: https://pan.baidu.com/s/1htt7KES 密碼: trtb


最近申請了微信公衆號,分享機器視覺和機器學習的內容,感興趣的同學可以掃碼關注。 

公衆號

發佈了83 篇原創文章 · 獲贊 354 · 訪問量 79萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章