可学习的多人人脸识别程序(基于Emgu CV)

源代码下载(需要安装Emgu CV,安装方法请百度) 

很多朋友使用Emgu CV遇到CvInvoke()的报错,我找到一种解决方法。

把EmguCV目录下bin里面的所有dll复制到C:\WINDOWS\SYSTEM32文件夹下,这样就OK了。

如果还不OK,试试把dll复制到程序目录(\Debug)下。

我这是玩玩而已,欢迎高手指教,但别说我这没意思。hello world也没意思,每天无数人照写。

刚刚学着老外的作品做了一个。嗯,没错,自从有了Emgu CV,模式识别的做法和模式简直成了标准。

当然,这给我这样图像处理还给老师很多年的差生来说,是个福音。

人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。

人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。 

我预期的设计目标是

  1. 检测人脸
  2. 学习检测到的人脸
  3. 利用学习库认人
  4. 支持摄像头和图片文件输入

做了1个多小时,目前只支持摄像头。已经完成了1、2、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#,   图形,   机器视觉

转载于:https://www.cnblogs.com/sczw-maqing/p/3213313.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值