OpenCvSharp人脸识别系统(视频中的人脸)
前段时间因项目中有用到人脸识别,折腾了好久才解决了问题。现将简单的人脸识别功能分享出来,供大家研究。 是基于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人脸识别系统(视频中的人脸)相关推荐
- 使用OpenCV-python识别图片视频中的人脸和眼睛
文章目录 思路和核心代码 识别图像中的人脸 识别视频中的人脸和眼睛 思路和核心代码 思路如下: 首先需要一个训练好的人脸和眼睛特征数据库,用于识别人脸和眼睛 识别出人脸和眼睛之后,返回所在的区域(一般 ...
- 人脸识别-在视频中识别人脸
感谢优秀的你打开了小白的文章 "希望在看文章的你今天又进步了一点点,离美好生活更近一步!" 目录 往期回顾 代码 结果展示 VideoCapture类的构造函数: 往期回顾 灰度转 ...
- 【深度学习】人脸识别、视频中找人的实现
转载请注明出处:http://blog.csdn.net/chengcheng1394/article/details/77817194 本程序使用SeetaFaceEngine和cv2.Cascad ...
- java 人脸识别jar包_java版天网人脸识别系统,获取视频流人脸识识别推送服务器展示...
java版天网人脸识别系统,获取视频流 进行人脸识别后推送到流媒体服务器实时展示 获取视频流 进行人脸识别后推送到red5服务器(人脸识别技术由虹软®提供) 整个系统共有两个项目组成 red5_hls ...
- frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...
文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 ...
- 【毕业设计/Matlab系列】基于PCA和BP神经网络的人脸识别系统(基于AR人脸库)
Date: 2022.5.30 文章目录 前言 1.算法原理 2.实现效果 3.测试matlab代码 前言 在大学毕业设计的时候,在毕业设计中实现了基于PCA和BP神经网络的人脸识别系统,采用matl ...
- python+opencv 实现图像人脸检测及视频中的人脸检测
执着于理想,纯粹于当下. 文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检 ...
- [Python图像处理] 二十八.OpenCV快速实现人脸检测及视频中的人脸
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- Python 计算机视觉(十六)—— 图像和视频中的人脸识别
参考的一些文章以及论文我都会给大家分享出来 -- 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了.大家一起学习,一起 ...
最新文章
- leetcode算法题--最低票价★
- PHP redis秒杀返回结果,php结合redis实现高并发下的抢购、秒杀功能
- 【渝粤题库】陕西师范大学200711 面向对象方法与C++ 作业
- linux 调用外部变量,sed当中使用变量替换以及执行外部命令
- 美军开发远程人脸识别系统,实现1公里内目标识别
- Notepad++便签模式
- 42、C++ Primer 4th笔记,IO库,未格式化IO操作
- js如何判断一个数组中是否有重复的值
- iMX8MM启动流程
- java编写九宫格拼图游戏_基于jquery实现九宫格拼图小游戏
- java ts文件 播放_前端如何播放m3u8格式的视频
- android 看图片tv版,易图浏览_易图浏览TV版APK下载_电视版 for 安卓TV_ZNDS软件
- 物联网卡设置_移动、联通、电信物联网卡APN设置教程
- np.arange函数的使用
- [读书笔记]自控力内容整理
- devenv.exe - 系统错误无法启动此程序,因为计算机中丢失 MSVCR100.dll。尝试重新安装该程序以解决此问题。【解决办法】...
- 每日一狗 · 惠比特犬
- 天线为什么会有多次谐振_如果天线不处于谐振状态,辐射效率会受到多大影响?...
- Hive经典例题解析
- bzoj 5143 [Ynoi2018]五彩斑斓的世界
热门文章
- 几个数字的组合方式种类个数
- 安装 python cuda
- 关于使用腾讯云HiFlow场景连接器每天提醒签到打卡
- android三星note20.6,三星Note20评测:这支手写笔是最大亮点?
- error C3861: “XXXX(自定义函数名)”: 找不到标识符
- SEO优化:自建站图片优化攻略
- 【树莓派开发】使用树莓派在Linux环境下编写C语言代码
- python 笔记 将一个log文件转换成excel提取数据保存
- 五分钟学会python函数_Python——带你五分钟了解函数式编程与闭包
- Error: EBUSY: resource busy or locked