C# 基于OpenCv的视觉工作流-章57-人脸识别
本章目标:
一、算法解释;
二、模型训练;
三、人脸识别;

章49-人脸检测是识别图像中人脸的位置,本章进一步深入,对识别的人脸具体是谁进行识别。人脸识别算法有多种,本文介绍LBPHFaceRecognizer经典算法,先进行模型训练,再进行识别。
一、算法解释

二、模型训练
1、创建识别器
var recognizer = LBPHFaceRecognizer.Create(
radius=1, # LBP 圆形邻域半径
neighbors=8, # 邻域采样点数
grid_x=8, # 水平网格数
grid_y=8, # 垂直网格数
threshold: double.PositiveInfinity); #预测阈值
2、训练模型
recognizer.Train(matList, indexList);
说明:参数1,为图像列表;
参数2,为各图像对应的姓名列表;
以下为训练的模型文件,如下图

三、人脸识别
1、检测人脸
先检测出人脸的位置,用章49-人脸检测实现
2、读取模型
LBPHFaceRecognizer recognizer = LBPHFaceRecognizer.Create();
recognizer.Read(autoModelUrl);
说明:参数为保存的模型路径
3、图像预处理
遍历取得的人脸图像,进行预处理,使图像尺寸与模型训练时的尺寸一致,用Cv2.Resize算子实现。
4、识别
int predictedLabel = -1;
double confidence = 0.0;
recognizer.Predict(faceMat, out predictedLabel, out confidence);
说明:参数1,为输入的人脸图像;
参数2,为输出的姓名;
参数3,为输出的置信度;
5、对识别结果进行显示处理
效果如下

参考链接
"VisionTool 探迹"免费视觉工具
下载地址:https://pan.baidu.com/s/11tktKOSnepLNIEqNbvnv6w?pwd=qv5i
"VisionTool Halcon"付费视觉工具(淘宝可搜)
对应系列文章"C# 基于Halcon的视觉工作流",欢迎前往阅读。
上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!