基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
背景
目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu CV、TensorFlow、CNTK 等等,针对 四大平台 百度AI、阿里ET、腾讯AI、科大讯飞AI 做结合。
PS:笔者的主打语言是C#,目前项目主导系统都是基于Net 系列下开发而成的。主要负责公司软件系统架构设计, 鉴于朋友圈中各位技术大牛无私分享,也是鉴于自己再专研时候遇到不少坑,希望把相关研究心得发出,为大家在coding 中减少 麻烦。稍后会把自己开源框架在博客中建立系列教程,插件化模式 自动服务 (都在实际项目中使用)。
选择的理由:四大平台目前 AI 团队算是全世界最牛的一群人,而且资金背景雄厚(AI 很烧钱!),现在四大平台 的AI有一些已经相对成熟,依靠于人家的技术,做自己的应用,应该是中小企业 在物联网行业前进的一个方向吧。
四大平台AI入口
1、百度AI https://ai.baidu.com/customer (百度AI 产品:阿波罗无人驾驶开源平台 )
2、腾讯AI https://ai.qq.com/hr/youtu.shtml(腾讯AI 产品:腾讯觅影)
3、讯飞AI http://startups.xfyun.cn/(讯飞:语音)
4、阿里云ET https://et.aliyun.com/index(阿里:城市大脑)
一、需求
1、目前我们需要通过摄像头 精准的捕获视频监控中人脸(要求精度高)
2、批量捕获人脸进行 人脸识别
3、在人脸矩形框中实时显示人员相关信息
二、技术难点
1、百度人脸识别 只是需要通过Image 图片通过开发接口发送,返回识别人物,所以前提还是要先做到人脸在视频中动态捕捉。
2、视频播放需要高效流畅播放,请求接口的效率是否影响视频监控友好展示。
三、技术选型
1、为了解决 视频中人脸动态捕捉,选用Emgu CV 是开源 框架 Open CV 的Net 版本,可以人脸精准抓取。
emgu CV 官网:http://www.emgu.com/
对于Emgu CV 的详细信息,请百度。
2、百度人脸识别,接口完善,人脸识别精准度高,可以很好的做到人脸识别。
百度人脸识别接口文档:http://ai.baidu.com/docs#/Face-Csharp-SDK/top
四、技术准备
1、到emgu cv 的官网下载 最新的emgu CV 版本,因为版本间差异较大,所以在百度搜索时候,会发现很多文章代码是无法直接copy的。
2、安装emgu cv 的最版本
请仔细查看 solution 文件夹,里面有对应solution 文件,(在windowDeskTop文件夹里面 )选择Emgu.CV.sln打开,就可以看到Emgu.CV.Example(Emgu.CV 的Demo)。
3、我们需要将 FaceDetection(人脸精准查找Demo)和VideoSurveilance(视频动态抓捕实现矩形框)两个Demo 做结合
4、到百度开发者中心注册成为开发者,并且获取开发者。
5、下载百度AI 开发平台 对应的SDK(已经封装过,可以减少开发工作量),或者直接进行Api对接。
五、实现
先上实现效果,相关个人信息如头像、还有姓名和电话都被我处理过了。
1、准备好摄像头,连接没问题就开始敲代码了。
2、在百度人脸库建立自己的人脸素材,这个要求要精准,比较适合就是员工的工牌相片,就是一寸或者两寸的照片那种。
详细方法 百度提供SDK 已经有了,就不多作介绍了。其中 自定义的 Uid(用户id,用于唯一码)、group (人才组)、userInfo(用户信息,作为人脸识别返回信息显示)比较关键。
sdk 下载地址:http://ai.baidu.com/sdk,下载完成将如图中 dll 引用到自己的类库中。
以下方法是我简单改造过了。
我做了一个简单的人脸库添加 工具,可以进行简单人脸库操作
3、选择VideoSurveilance 做改造,上代码。
其中
void ProcessFrame(object sender, EventArgs e) 方法 是关键,里面就是具体操作人脸识别具体应用。 将 FaceDetection 中的相关内容copy 到VideoSurveilance 项目中,其中 haarcascade_frontalface_default.xml 用于 人脸检测,DetectFace.cs 是具体检测人脸方法。
核心代码介绍
获取人脸矩形框,对应的xml 文件要放在根目录下(winform就是 在bin文件夹中)
DetectFace.Detect(image, "haarcascade_frontalface_default.xml", "haarcascade_eye.xml", faces, eyes,out detectionTime);faces 就是返回的 人脸检测内容, foreach (Rectangle face in faces) 对它进行动态获取人脸,在视频中画出来就可以了 // 调用百度人脸识别接口,该方法 SDK 已经有了,我做了一些简单的封装,就是把截取到的矩形头像发送给百度去识别,这个识别是基于自己在百度建立的人脸库
FaceIdentifyModel MoreIdentifyInfo = FaceAPI.FaceIdentify(rectImage1, tb_Group.Text.Trim(), 1, 1);//人脸识别 一个人的识别效果比较好
完成上述工作,人脸识别就完成了,测试过,只要人脸库中的素材清晰,识别基本在99% 左右。
相关文章:
Build 2017 | 一文看懂微软 Build 2017 大会:让 AI 走向边缘
认识微软Visual Studio Tools for AI
VS Tools for AI全攻略
VS Tools for AI全攻略(2)低配置虚拟机也能玩转深度学习,无需NC/NV系列
原文:http://www.cnblogs.com/linbin524/p/linbin524.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别相关推荐
- 短视频评论的抓取及分析
短视频评论的抓取及分析 一.设计背景 目前,短视频已经成为大多数人娱乐消遣的主要方式.用户在观看视频内容的同时,也同样关注视频评论,并且很多时候评论带给人们的乐趣远远超过视频本身.但是各短视频平台都没 ...
- 【实战+源码】基于RGB-D(深度视觉)的具有机械臂抓取功能的自主规划移动服务机器人的设计与实现(一)——准备工作
目录 一,实物or仿真 1,实物或仿真的利弊 2,从哪些角度去考虑是选择实物还是仿真 二,环境准备 1,首推ROS 2,其他环境 三,理论学习 四,实物搭建 一,实物or仿真 我想这个问题是在开发之前 ...
- b站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发)
BiLiBiLi Time: 2020年11月6日19:44:58 Author: Yblackd BiLiBiLi BiLiBiLi 介绍 软件架构 安装教程 使用说明 源码下载 BiLiBiLi ...
- python3爬虫系列23之selenium+腾讯OCR识别验证码登录微博且抓取数据
python3爬虫系列23之selenium+腾讯OCR识别验证码登录微博且抓取数据 1.前言 上一篇是一个 python3爬虫系列22之selenium模拟登录需要验证码的微博且抓取数据, 我们是首 ...
- 百度认为什么样的网站更有抓取和收录价值
百度认为什么样的网站更有抓取和收录价值 百度认为什么样的网站更有抓取和收录价值呢?我们从下面几个方面简单介绍.鉴于技术保密以及网站运营的差异等其他原因,以下内容仅供站长参考,具体的收录策略包括但不仅限 ...
- 【转】 asp.net从视频文件中抓取一桢并生成图像文件的方法 实现多语言本地化应用程序 自动返回上次请求页面...
asp.net从视频文件中抓取一桢并生成图像文件的方法 http://www.bianceng.cn/webkf/aspx/201012/21428.htm WebUIValidation.js ht ...
- SEO网站视频链接批量抓取
网站视频SEO也包含在我们的网站优化当中,这是因为视频越来越具有吸引力,可以帮助用户在我们的网站上停留更长时间,不需要过多的思考就可以获得直观的感受,如何获取热门的短视频是我们视频SEO的关键. 通过 ...
- idm抓取网页视频原理 idm抓取网页视频后怎么提取
对于网页视频的下载,我们可以使用windows端多线程下载工具--Internet Download Manager,通过Internet Download Manager我们可以直接抓取网页视频,i ...
- python手势识别控制幻灯片翻页系统_基于Emgu CV 的手势识别实现PPT的控制放映
Emgu CV 简介 众所周知,Emgu CV是.NET平台下对OpenCV图像处理库的封装,也就是.NET版的OpenCV.开发者可以很方便的通过C#,VB等语言调用OpenCV函数来实现相应的图像 ...
最新文章
- http://blog.51cto.com/wutengfei/1917288
- Java_异常_05_ OutOfMemoryError: Java heap space
- JVM-12虚拟机性能监控与故障处理工具之【JDK的可视化工具-VisualVM】
- 【Python数据挖掘课程】七.PCA降维操作及subplot子图绘制
- 修正CS2.0中的日历头显示错误
- 监督学习和无监督学习_机器学习的要素是什么? 有监督学习和无监督学习两大类...
- 【Java线程】复盘线程池使用及思考
- python 生成器 原理_你知道python中的函数、生成器的工作原理吗?
- Windows Phone 8.1 多媒体(2):视频
- 【语音分析】基于matlab语音线谱对转换【含Matlab源码 560期】
- Jsoup 爬虫之百度贴吧
- 如何出版一本技术类书籍
- 最值得收藏的 搜狗输入法 常用快捷键使用, 让你的效率成倍增加
- 桑德伯格加州大学伯克利分校2016毕业演讲+我从死亡中学到的东西
- 两个分数化简比怎么化_两个分数的比化简怎么化急用
- 错误码400原因总结
- mysql自动排序_mysql自动排序
- 基于物理着色:BRDF
- Leecode- 584. 寻找用户推荐人
- 阿里妈妈展示广告粗排:面向链路一致性优化的端到端序学习模型
热门文章
- linux内存回收机制
- 转:Chrome渲染分析之Timeline工具的使用
- CSharp设计模式读书笔记(10):装饰模式(学习难度:★★★☆☆,使用频率:★★★☆☆)...
- windows phone 8 的新特性
- 金山安全实验室公布中国互联网六大类钓鱼网站
- .NET遗留应用改造——性能优化篇
- 如何在 Dapper.NET 中使用事务?
- 使用identity+jwt保护你的webapi(一)——identity基础配置
- 微结构设计能力看国产CPU发展
- .NET:使用 LinqSharp 简化复杂查询