1.人脸检测 CascadeClassifier
加载 Opencv 自带的人脸检测 haarcascade_frontalface_alt.xml 分类器。
图像预处理 cvtColor(灰度化) equalizeHist(直方图均衡化)。
使用 detectMultiScale 函数进行识别。
使用 rectangle 函数绘制找到的目标矩形框。
在原图像上 ROI 截取彩色的人脸保存。
2.人脸识别 FaceRecognizer FisherFaceRecognizer LBPHFaceRecognizer
2.1 人脸识别分类器训练
样本归一化,即图像大小一致、灰度化、直方图均衡化等。
Ptr face = EigenFaceRecognizer::create()。
创建样本和标签向量 std::vector images std::vector labels 并 push_back 加入样本和标签。
进行训练 face->train(images,labels)。
保存训练的分类器 face->save("face.xml")。
2.2 人脸识别分类器加载和使用
加载训练好的分类器 face->load(face.xml)。
待识别图像预处理 resize cvtColor 等。
预测输入图像获取标签值 int label = face->predict(Mat src),当然也可以获取 置信度 来调整 阈值。
根据标签值,绘制 putText 对应的角色名。