基于OpenCVSharp的人脸识别系统

本文介绍了基于OpenCvSharp构建人脸识别系统的过程,包括人脸检测、数据准备、人脸识别器训练、结果显示和添加人脸数据。文章详细阐述了关键步骤,如使用级联分类器检测人脸,训练识别器以及如何预测和显示结果。作者分享了开发心得,强调了系统设计和模块化的重要性,以及传统人脸识别算法与深度学习方法的优缺点。
摘要由CSDN通过智能技术生成

一、概述

因为OpenCv对UI兼容不是很好,C#可以很好地写UI,有2个框架可供选择:1、EmguCv;2、OpenCvSharp。OpenCvSharp是一个日本人开发的开源项目,里面封装的类和方法和OpenCv非常相似,且底层协议用的是BSD,对商业友好,OpenCvSharp的下载量已经超过了EmguCv,之前用了EmguCv,现在改用OpenCvSharp来做OpenCv的程序开发。人脸识别系统大致可分为四部分:
第一、人脸检测;
第二、数据准备及人脸识别器的训练;
第三、人脸识别并显示结果;
第四、添加人脸数据

二、人脸检测

加载haarcascade_frontalface_alt.xml(一个已经训练好的用于检测人脸的级联分类器文件,在OpenCv库下的Source文件夹下有很多这样额级联分类器资源),DetectMultiScale方法用于检测人脸,返回人脸矩形框,关键代码如下:

CascadeClassifier cascade = new CascadeClassifier(@"..\..\FaceCascade\haarcascade_frontalface_alt.xml");

            Rect[] faces = cascade.DetectMultiScale(
                image: grayImage,
                scaleFactor: 1.1,
                minNeighbors: 2,
                flags: HaarDetectionType.DoRoughSearch | HaarDetectionType.ScaleImage,
                minSize: new OpenCvSharp.Size(30, 30)
            );

三、数据准备及人脸识别器的训练

需要准备好经过灰度化和直方图均衡化的人脸图像以及它对应的ID(每张人脸只有一个ID,一个ID可以对应多张人脸),为每个人建立一个文件夹,文件夹下存储多张该人脸图片(本系统设定只存3张)。创建一个识别器,OpenCV提供了三种人脸识别器:FisherFaceRecognizer,LBPHFaceRecognizer,EigenFaceRecognizer,可任选一种识别器创建。将人脸数据和ID导入到人脸识别器进行训练࿰

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值