前段时间因项目中有用到人脸识别,折腾了好久才解决了问题。现将简单的人脸识别功能分享出来,供大家研究。 是基于OpenCVSharp写的人脸识别功能,启用电脑自带的摄像头,识别到人脸图片,并以视频的形式显示到界面上。

1、基本介绍

1.1  本系统是基于.Net Framework 4.0所开发,采用Visual Studio 2012,OpenCvSharp进行人脸识别。

OpenCvSharp下载地址:https://github.com/shimat/opencvsharp/releases

下载界面如下图所示,根据自己情况,下载32位或64位的。

1.2  项目中运用的为“net40”所对应的dll,注意要选择正确版本的dll,否则会出现错误,本人在此地方折腾了好久

2、新建项目

2.1  在Visual Studio 2012中新建项目,选择.Net Framework4.0 的版本,这个地方一定要与所选择的OpenCVSharp的版本一致。

2.2  添加OpenCVSharp DLL引用

2.3  复制OpenCvSharpExtern.dll到项目的bin\Debug下

2.4  界面设计

稍微有点.Net  WinForm基础,此地方都不是问题,在此就直接上图。

一个 PictureBox,二个Button按钮控件

3、开启电脑摄像头

3.1  开启摄像头代码,核心代码如下,本人只研究了开启电脑摄像头,至于能否开启其他设备的摄像头,大家可以去尝试下。

myVideoCapture = new VideoCapture(CaptureDevice.Any);                
                if (!myVideoCapture.IsOpened())
                {
                    MessageBox.Show("摄像头开启失败", "故障", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                myVideoCapture.Set(CaptureProperty.FrameWidth, 450);//宽度
                myVideoCapture.Set(CaptureProperty.FrameHeight, 360);//高度
                isOpenCamera = true;
                myThread = new Thread(playVideo);
                myThread.Start();
                btnOpen.Text = "关闭摄像头";

4、显示视频至界面

4.1  开启线程,显示视频到画面上,核心代码如下

while (true)
            {
                Mat myFrame = new Mat();
                myVideoCapture.Read(myFrame);

int sleepTime = (int)Math.Round(1000 / myVideoCapture.Fps);
                Cv2.WaitKey(sleepTime);
                if (myFrame.Empty())
                {
                    continue;
                }
                Cv2.Flip(myFrame, myFrame, OpenCvSharp.FlipMode.Y);
                Rect myRect = new Rect(0, 0, 450, 360);
                Mat newFrame = new Mat(myFrame, myRect);
                if (isFaceDetect)
                {
                    faceDetect(newFrame);
                }
                else
                {
                    picCamera.Image = newFrame.ToBitmap();
                }
                myFrame.Release();
            }

4、OpenCVSharp识别人脸

4.1  将视频中每帧所对应的图片进行识别,对识别到的人脸,以绿色圈起来,显示到界面上

本例中采用的是只能识别正脸的方式

Mat grayImage = new Mat();
            Cv2.CvtColor(src, grayImage, ColorConversionCodes.BGR2GRAY);
            Cv2.EqualizeHist(grayImage, grayImage);

CascadeClassifier cascade = new CascadeClassifier(@"haarcascades\haarcascade_frontalface_alt.xml");
            Rect[] faces = cascade.DetectMultiScale(
                image: grayImage,
                scaleFactor: 1.1,
                minNeighbors: 1,
                flags: HaarDetectionType.DoRoughSearch | HaarDetectionType.ScaleImage,
                minSize: new OpenCvSharp.Size(30, 30)
            );
            if (faces.Length <= 0) //没识别到人脸
            {
                picCamera.Image = src.ToBitmap();                
            }
            else
            {
                Bitmap myBitmap = src.ToBitmap();
                Graphics g = Graphics.FromImage(myBitmap);
                Font font = new Font("宋体", 16, GraphicsUnit.Pixel);
                SolidBrush fontLine = new SolidBrush(Color.Yellow);                
                foreach (Rect face in faces)
                {
                    g.DrawRectangle(new Pen(Color.YellowGreen, 2), face.X, face.Y, face.Width, face.Height);                   
                }
                g.Save();
                picCamera.Image = myBitmap;                            
            }

6、效果图

6、总结

利用.Net 对OpenCVSharp进行操作,本人也只能算是简单的了解,可能还有很多地方需要去深挖研究。做项目时,在找资料上浪费了很多时间,特总结下,避免在浪费时间。

后续有时间了,在总结抓拍,训练,人脸比对等功能。

此Demo的下载地址为,仅供大家参考:

https://download.csdn.net/download/auogsy/11614517

OpenCvSharp人脸识别系统(视频中的人脸)相关推荐

  1. 使用OpenCV-python识别图片视频中的人脸和眼睛

    文章目录 思路和核心代码 识别图像中的人脸 识别视频中的人脸和眼睛 思路和核心代码 思路如下: 首先需要一个训练好的人脸和眼睛特征数据库,用于识别人脸和眼睛 识别出人脸和眼睛之后,返回所在的区域(一般 ...

  2. 人脸识别-在视频中识别人脸

    感谢优秀的你打开了小白的文章 "希望在看文章的你今天又进步了一点点,离美好生活更近一步!" 目录 往期回顾 代码 结果展示 VideoCapture类的构造函数: 往期回顾 灰度转 ...

  3. 【深度学习】人脸识别、视频中找人的实现

    转载请注明出处:http://blog.csdn.net/chengcheng1394/article/details/77817194 本程序使用SeetaFaceEngine和cv2.Cascad ...

  4. java 人脸识别jar包_java版天网人脸识别系统,获取视频流人脸识识别推送服务器展示...

    java版天网人脸识别系统,获取视频流 进行人脸识别后推送到流媒体服务器实时展示 获取视频流 进行人脸识别后推送到red5服务器(人脸识别技术由虹软®提供) 整个系统共有两个项目组成 red5_hls ...

  5. frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...

    文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 ...

  6. 【毕业设计/Matlab系列】基于PCA和BP神经网络的人脸识别系统(基于AR人脸库)

    Date: 2022.5.30 文章目录 前言 1.算法原理 2.实现效果 3.测试matlab代码 前言 在大学毕业设计的时候,在毕业设计中实现了基于PCA和BP神经网络的人脸识别系统,采用matl ...

  7. python+opencv 实现图像人脸检测及视频中的人脸检测

    执着于理想,纯粹于当下. 文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检 ...

  8. [Python图像处理] 二十八.OpenCV快速实现人脸检测及视频中的人脸

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. Python 计算机视觉(十六)—— 图像和视频中的人脸识别

    参考的一些文章以及论文我都会给大家分享出来 -- 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了.大家一起学习,一起 ...

最新文章

  1. leetcode算法题--最低票价★
  2. PHP redis秒杀返回结果,php结合redis实现高并发下的抢购、秒杀功能
  3. 【渝粤题库】陕西师范大学200711 面向对象方法与C++ 作业
  4. linux 调用外部变量,sed当中使用变量替换以及执行外部命令
  5. 美军开发远程人脸识别系统,实现1公里内目标识别
  6. Notepad++便签模式
  7. 42、C++ Primer 4th笔记,IO库,未格式化IO操作
  8. js如何判断一个数组中是否有重复的值
  9. iMX8MM启动流程
  10. java编写九宫格拼图游戏_基于jquery实现九宫格拼图小游戏
  11. java ts文件 播放_前端如何播放m3u8格式的视频
  12. android 看图片tv版,易图浏览_易图浏览TV版APK下载_电视版 for 安卓TV_ZNDS软件
  13. 物联网卡设置_移动、联通、电信物联网卡APN设置教程
  14. np.arange函数的使用
  15. [读书笔记]自控力内容整理
  16. devenv.exe - 系统错误无法启动此程序,因为计算机中丢失 MSVCR100.dll。尝试重新安装该程序以解决此问题。【解决办法】...
  17. 每日一狗 · 惠比特犬
  18. 天线为什么会有多次谐振_如果天线不处于谐振状态,辐射效率会受到多大影响?...
  19. Hive经典例题解析
  20. bzoj 5143 [Ynoi2018]五彩斑斓的世界

热门文章

  1. 几个数字的组合方式种类个数
  2. 安装 python cuda
  3. 关于使用腾讯云HiFlow场景连接器每天提醒签到打卡
  4. android三星note20.6,三星Note20评测:这支手写笔是最大亮点?
  5. error C3861: “XXXX(自定义函数名)”: 找不到标识符
  6. SEO优化:自建站图片优化攻略
  7. 【树莓派开发】使用树莓派在Linux环境下编写C语言代码
  8. python 笔记 将一个log文件转换成excel提取数据保存
  9. 五分钟学会python函数_Python——带你五分钟了解函数式编程与闭包
  10. Error: EBUSY: resource busy or locked