可學習的多人人臉識別程序(基於Emgu CV)

源代碼下載(須要安裝Emgu CV,安裝方法請百度) web

不少朋友使用Emgu CV遇到CvInvoke()的報錯,我找到一種解決方法。ide

把EmguCV目錄下bin裏面的全部dll複製到C:\WINDOWS\SYSTEM32文件夾下,這樣就OK了。post

若是還不OK,試試把dll複製到程序目錄(\Debug)下。學習

我這是玩玩而已,歡迎高手指教,但別說我這沒意思。hello world也沒意思,天天無數人照寫。this

剛剛學着老外的做品作了一個。嗯,沒錯,自從有了Emgu CV,模式識別的作法和模式簡直成了標準。spa

固然,這給我這樣圖像處理還給老師不少年的差生來講,是個福音。.net

人臉識別特指利用分析比較人臉視覺特徵信息進行身份鑑別的計算機技術。設計

人臉識別是一項熱門的計算機技術研究領域,它屬於生物特徵識別技術,是對生物體(通常特指人)自己的生物特徵來區分生物體個體。 3d

我預期的設計目標是code

  1. 檢測人臉
  2. 學習檢測到的人臉
  3. 利用學習庫認人
  4. 支持攝像頭和圖片文件輸入

作了1個多小時,目前只支持攝像頭。已經完成了一、二、3功能,有些使用上的細節尚未調整。

效果以下(用了火箭隊的圖,其實我真心不是籃球迷)

已知bug

  1. 誤識,若是學習庫容量太少,那麼會出現把好幾我的認成同一我的,隨着容量增大問題消失
  2. 重複識別,對認人來講不影響(認出2次和認出1次有太大區別嗎)
  3. 功能不全(我只能說請看本貼標題)

使用方法

  1. 肯定你要有攝像頭
  2. 選擇webcam模式
  3. 建議選擇「auto stop」在識別出內容後會自動中止
  4. 「start/stop」開始/暫停
  5. 「Learn」能夠吧識別到的(若是你以爲效果好)臉存起來
  6. 給臉更名字(Emgu CV的Draw方法繪製的文字是不支持中文的,使用下面的代碼完成中文人名繪製)
  7. 在攝像頭面前跑跑,看能不能認出你來。
繪製中文人名
        Dictionary<string, Rectangle> foundPeople = new Dictionary<string, Rectangle>();

        float xfactor;
        float yfactor;

        private void imageBox_Paint(object sender, PaintEventArgs e)
        {
            if (foundPeople.Count > 0)
            {
                // 縮放
                xfactor = (float)imageBox.Width / (float)current.Bitmap.Width;
                yfactor = (float)imageBox.Height / (float)current.Bitmap.Height;

                foreach (string name in foundPeople.Keys)
                {
                    e.Graphics.DrawString(
                        name,
                        this.Font,
                        Brushes.Red,
                        foundPeople[name].X * xfactor,
                        foundPeople[name].Y * yfactor);
                }
            }
        }
View Code

 

效果以下 

 

(全文完)

 
 
 
標籤:   C#,   圖形,   機器視覺
相關文章
相關標籤/搜索