当前位置:   article > 正文

使用OpencvSharp实现人脸识别

使用OpencvSharp实现人脸识别

在网上有很多关于这方面的博客,但是都没有说完整,按照他们的博客做下来代码都不能跑。所以我就自己写个博客补充一下

我这使用的.NET框架版本是 .NetFramework4.7.1

使用Nuget安装这两个程序包就够了,不需要其他的配置

一定要安装OpenCvSharp4.runtime.win 否则运行后会报错

对单个图片进行人脸识别:

  1. string path = "D:\\素材\\R-C (1).jpg"; //aaaa.mp4
  2. Mat srcImg = Cv2.ImRead(path, (ImreadModes)1);
  3. //加载人眼、人脸模型数据
  4. OpenCvSharp.CascadeClassifier faceFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml");
  5. OpenCvSharp.CascadeClassifier eyeFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_eye_tree_eyeglasses.xml");
  6. //进行检测识别
  7. Rect[] faceRects = faceFinder.DetectMultiScale(srcImg);
  8. Rect[] eyeRects = eyeFinder.DetectMultiScale(srcImg);
  9. //如果有检测到,就绘制结果到图像上
  10. if (faceRects.Length > 0)
  11. {
  12. Cv2.Rectangle(srcImg, faceRects[0], new Scalar(0, 0, 255), 3);
  13. }
  14. if (eyeRects.Length > 1)
  15. {
  16. Cv2.Rectangle(srcImg, eyeRects[0], new Scalar(255, 0, 0), 3);
  17. Cv2.Rectangle(srcImg, eyeRects[1], new Scalar(255, 0, 0), 3);
  18. }
  19. //显示结果
  20. Cv2.ImShow("showImg", srcImg);
  21. Cv2.WaitKey(1);

对摄像头的画面或者本地视频画面进行人脸识别:

  1. //读取本地的视频
  2. FrameSource video = Cv2.CreateFrameSource_Video("D:\\素材\\aaaa.mp4");
  3. //使用摄像头
  4. //FrameSource video = Cv2.CreateFrameSource_Camera(1);
  5. //声明窗口
  6. Cv2.NamedWindow("video", WindowFlags.Normal);
  7. while (true)
  8. {
  9. //获取帧
  10. Mat frame = new Mat();
  11. video.NextFrame(frame);
  12. //加载人眼、人脸模型数据
  13. OpenCvSharp.CascadeClassifier faceFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml");
  14. OpenCvSharp.CascadeClassifier eyeFinder = new CascadeClassifier(@"G:\baiduDownload\opencv\sources\data\haarcascades\haarcascade_eye_tree_eyeglasses.xml");
  15. //进行检测识别
  16. Rect[] faceRects = faceFinder.DetectMultiScale(frame);
  17. Rect[] eyeRects = eyeFinder.DetectMultiScale(frame);
  18. //如果有检测到,就绘制结果到图像上
  19. if (faceRects.Length > 0)
  20. {
  21. Cv2.Rectangle(frame, faceRects[0], new Scalar(0, 0, 255), 3);
  22. }
  23. if (eyeRects.Length > 1)
  24. {
  25. Cv2.Rectangle(frame, eyeRects[0], new Scalar(255, 0, 0), 3);
  26. Cv2.Rectangle(frame, eyeRects[1], new Scalar(255, 0, 0), 3);
  27. }
  28. //显示结果
  29. Cv2.ImShow("video", frame);
  30. Cv2.WaitKey(1);
  31. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/820919
推荐阅读
相关标签
  

闽ICP备14008679号