设为首页 加入收藏

TOP

Asp.net+WebSocket+Emgucv实时人脸识别(五)
2017-10-10 12:47:31 】 浏览:11457
Tags:Asp.net WebSocket Emgucv 实时 人脸 识别
._EqualizeHist();
//得到均衡化人脸的灰度图像 #region 得到匹配姓名 Emgu.CV.Face.FaceRecognizer.PredictionResult pr = tfr.faceRecognizer.Predict(GrayFace); string name = ""; //Distance越小表示 越可能是同一个人 if (pr.Distance <4000) { name = tfr.trainedFileList.trainedFileName[pr.Label].ToString(); } #endregion fdo.names.Add(name); } } #endregion return fdo; } #region 自定义类及访问类型 public class TrainedFileList { public List<Image<Gray, byte>> trainedImages = new List<Image<Gray, byte>>(); public List<int> trainedLabelOrder = new List<int>(); public List<string> trainedFileName = new List<string>(); } public class TrainedFaceRecognizer { public Emgu.CV.Face.FaceRecognizer faceRecognizer; public TrainedFileList trainedFileList; } public class faceDetectedObj { public Mat originalImg; public List<Rectangle> facesRectangle; public List<string> names = new List<string>(); } public enum FaceRecognizerType { EigenFaceRecognizer = 0, FisherFaceRecognizer = 1, LBPHFaceRecognizer = 2, }; #endregion } }

  OK,核心代码都齐了,但是你想点击Debug来跑一个那还不行,,你会发现在调用emgucv的时候会报错:

“Emgu.CV.CvInvoke”的类型初始值设定项引发异常 !!!!!!!!!

就是这个异常,几乎伴随整个项目,关于这个异常,稍后我再总结一下。在代码都完事的时候在vs上跑不起来,很伤心啊,,很绝望,,想了好久好久,会不会是vs根本就没把x64文件夹下的dll加载起来?,把项目发布到iis上跑了一下,居然成功了!别提我有多鸡冻了。所以呢,就不在vs上调试了,直接放服务器上跑,在慢慢调试。下面是发布后的样子:

  二.总结

     1.对于上边提到的那个异常,首先是和.net版本有关,当时我先整的winform版的人脸识别,用的.net4.5,就报那个异常,一直降级降到3.5才ok。但是在写web服务端的时候,用的.net4.5却又完全没问题。我也很蒙。还有一个原因就是之前提到的x64文件夹,要把整个文件夹放到应用程序的bin目录下(把整个文件夹放进去就行,不要把里边的dll复制出来到bin下),大概700多M。

    2.emgucv各个版本差别较大,在这个版本能用的代码,到其他版本可能根本用不了。

 

暂时先这些吧,有什么疏忽的以后再补上。本来还想用Xamarin.Android做个安卓app的,但是。。。好难啊,就一个socket就遇到了麻烦。有懂Xamarin的大神能指点指点吗?

 

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇UWP 手绘视频创作工具技术分享系列 下一篇UWP 手绘视频创作工具技术分享系..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目