http://blog.csdn.net/conmajia/article/details/7596733
作者:野比 ([email protected])
時間:May, 2012
封面圖片為野比原創,請勿未經允許私自引用
源代碼下載(需要安裝Emgu CV,安裝方法請百度)
很多朋友使用Emgu CV遇到CvInvoke()的報錯,我找到一種解決方法。
把EmguCV目錄下bin裡面的所有dll復制到C:\WINDOWS\SYSTEM32文件夾下,這樣就OK了。
如果還不OK,試試把dll復制到程序目錄(\Debug)下。
我這是玩玩而已,歡迎高手指教,但別說我這沒意思。hello world也沒意思,每天無數人照寫。
剛剛學著老外的作品做了一個。嗯,沒錯,自從有了Emgu CV,模式識別的做法和模式簡直成了標准。
當然,這給我這樣圖像處理還給老師很多年的差生來說,是個福音。
人臉識別特指利用分析比較人臉視覺特征信息進行身份鑑別的計算機技術。
人臉識別是一項熱門的計算機技術研究領域,它屬於生物特征識別技術,是對生物體(一般特指人)本身的生物特征來區分生物體個體。
我預期的設計目標是
- 檢測人臉
- 學習檢測到的人臉
- 利用學習庫認人
- 支持攝像頭和圖片文件輸入
做了1個多小時,目前只支持攝像頭。已經完成了1、2、3功能,有些使用上的細節還沒有調整。
效果如下(用了火箭隊的圖,其實我真心不是籃球迷)
已知bug
- 誤識,如果學習庫容量太少,那麼會出現把好幾個人認成同一個人,隨著容量增大問題消失
- 重復識別,對認人來說不影響(認出2次和認出1次有太大區別嗎)
- 功能不全(我只能說請看本貼標題)
使用方法
- 確定你要有攝像頭
- 選擇webcam模式
- 建議選擇「auto stop」在識別出內容後會自動停止
- 「start/stop」開始/暫停
- 「Learn」可以吧識別到的(如果你覺得效果好)臉存起來
- 給臉改名字(Emgu CV的Draw方法繪制的文字是不支持中文的,使用下面的代碼完成中文人名繪制)
- 在攝像頭面前跑跑,看能不能認出你來。
- 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);
- }
- }
- }
效果如下
(全文完)
作者:野比 ([email protected])
時間:May, 2012