C# OpenCV 3- 使用EigenFaceRecognizer人脸识别
2018-12-01 23:02
417 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csharp25/article/details/84679655
[code]... public void TrainRecognizer() { var allFaces = new FRService().All(); if (allFaces.Count > 0) { var faceImages = new Image<Gray, byte>[allFaces.Count]; var faceLabels = new int[allFaces.Count]; for (int i = 0; i < allFaces.Count; i++) { Stream stream = new MemoryStream(); stream.Write(allFaces[i].Face, 0, allFaces[i].Face.Length); var faceImage = new Image<Gray, byte>(new Bitmap(stream)); faceImages[i] = faceImage.Resize(100, 100, Inter.Cubic); faceLabels[i] = (int)(allFaces[i].Id); } // can also try :LBPHFaceRecognizer var fr = new EigenFaceRecognizer(); fr.Train(faceImages, faceLabels); var retPath = ConfigurationManager.AppSettings["trainedPath"]; var savedFile = retPath + $"{DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss")}_frModel"; fr.Save(savedFile); MessageBox.Show($"Model trained successfully. saved into {savedFile}"); } else { MessageBox.Show("No face found in db"); } } ...
人脸数据服务类
[code]public class FRService { public bool Enroll(UserFace record, out string error) { error = ""; try { using (var context = new EmguFRContext()) { var existing = context.UserFaces.FirstOrDefault(x => x.UserName == record.UserName); if (existing != null) { context.UserFaces.Remove(existing); } context.UserFaces.Add(record); context.SaveChanges(); } return true; } catch (DbEntityValidationException ex) { error = ex.Message; if (ex.InnerException != null) { error += "\r\n" + ex.InnerException; } return false; } catch (Exception ex) { error = ex.Message; return false; } } public IList<UserFace> All() { try { using (var context = new EmguFRContext()) { var all = context.UserFaces.ToList(); return all; } } catch (Exception ex) { return new List<UserFace>(); } } } public partial class EmguFRContext : DbContext { public EmguFRContext() : base("name=FRDataContext") { } public virtual DbSet<UserFace> UserFaces { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { } } [Table("UserFace")] public partial class UserFace { public long Id { get; set; } [StringLength(50)] public string UserName { get; set; } [Column(TypeName = "image")] public byte[] Face { get; set; } }
相关文章推荐
- C# OpenCV4 -EigenFaceRecognizer识别人脸2
- 基于OpenCV的EigenFace FisherFace LBPHFace人脸识别的实现
- OpenCV 使用FaceRecognizer类来进行人脸识别
- Java使用OpenCV进行人脸识别
- 怎样使用OpenCV进行人脸识别 [停止更新]
- Java使用OpenCV实现人脸识别/人眼检测/图片截取/合成/添加水印
- 怎样使用OpenCV进行人脸识别
- OpenCV 人脸识别使用 cvLoad()加载分类器报错的解决方法
- 使用OpenCV开发人脸识别及相关注意事项
- C# OpenCV学习笔记六之人脸识别/五官识别测试
- 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
- opencv3.0使用Eigen方法进行人脸识别的方法
- Android OpenCV_face使用OpenCV3.20的一个免安装OpenCV Manager的脸部识别项目
- OpenCV学习记录(一):使用haar分类器进行人脸识别
- C# 使用OpenCV在一张图片里寻找人脸
- 使用OpenCV+PCA+KNN/SVM进行人脸检测和识别-Python
- 使用OpenCV进行人脸识别的三种算法(官方网翻译)
- 人脸识别经典算法一:特征脸方法(Eigenface)
- 怎样使用OpenCV进行人脸识别
- Android使用OpenCV实现「人脸检测」和「人脸识别」