视频流中实时人脸检测
2016-06-21 00:04
375 查看
发现一个人脸检测库,可供商业和非商业无限制使用,包含正面和多视角人脸检测两个算法.优点:速度快(OpenCVhaar+adaboost的2-3倍), 准确度高 (FDDB非公开类评测排名第二),能估计人脸角度,这是纯C语言生成的二进制库,不依赖任何其他的库。下载地址为:https://github.com/ShiqiYu/libfacedetection。性能如下:
因此萌生了使用该库在视频流中检测人脸的想法,试验其实时检测人脸的能力。编程环境:win10+WindowsSDK7.1+opencv2.4.13,任务就是采用DirectShow编写一个Transform Filter,opencv的目的只是将每个Sample转换成灰度图像数据方便处理。在vs2013项目中新建一个Filter项目,名称为FilterFaceDT。
既可以自己新建,也可以基于DirectShow自带的例子进行修改。关键代码是在转换类的Transform(IMediaSample *pMediaSample)函数中:
生成FaceDT.ax后,使用带管理员权限运行cmd,注册之。
下面用DirectShow中的graphedt构造FilterGraph,如下图所示。
检测效果如下,貌似还不错,有兴趣的朋友可以使用其它两个函数facedetect_multiview和facedetect_multiview_reinforce进行测试:
资源下载地址:http://download.csdn.net/detail/wootengxjj/9554995
因此萌生了使用该库在视频流中检测人脸的想法,试验其实时检测人脸的能力。编程环境:win10+WindowsSDK7.1+opencv2.4.13,任务就是采用DirectShow编写一个Transform Filter,opencv的目的只是将每个Sample转换成灰度图像数据方便处理。在vs2013项目中新建一个Filter项目,名称为FilterFaceDT。
既可以自己新建,也可以基于DirectShow自带的例子进行修改。关键代码是在转换类的Transform(IMediaSample *pMediaSample)函数中:
IplImage* img = cvCreateImage(cvSize(cxImage,cyImage), IPL_DEPTH_8U, 1);//创建灰度图 uchar *p = (uchar *)img->imageData; for (int i = height-1; i >= 0; i--){ for (int j = 0; j < width; j++){ <span style="white-space:pre"> </span>uchar a = prgb->rgbtBlue*0.114 + prgb->rgbtGreen*0.587 + prgb->rgbtRed*0.299;//转换为灰度值 p[i*step + j] = a; prgb++; } } Mat gray(img); int * pResults = NULL; pResults = facedetect_frontal((unsigned char*)(gray.ptr(0)), gray.cols, gray.rows, gray.step,1.2f, 3, 24);//这是人脸检测的关键函数 if (pResults){ sprintf(text, "人脸检测%d:%d*%d", *pResults, img->width, img->height); DrawString(10, 10, text, rq, "宋体", 0, 800);// 此时坐标系为正常视觉 this->DrawRect(pResults, width, height, rq); //开始画人脸矩形 }
生成FaceDT.ax后,使用带管理员权限运行cmd,注册之。
下面用DirectShow中的graphedt构造FilterGraph,如下图所示。
检测效果如下,貌似还不错,有兴趣的朋友可以使用其它两个函数facedetect_multiview和facedetect_multiview_reinforce进行测试:
资源下载地址:http://download.csdn.net/detail/wootengxjj/9554995
相关文章推荐
- Javascript实现图片加载从模糊到清晰显示的方法
- bootstrap学习笔记之初识bootstrap
- 省市选择的简单实现(基于zepto.js)
- JavaScript实现相册弹窗功能(zepto.js)
- 基于zepto.js简单实现上传图片
- 第二篇Bootstrap起步
- Bootstrap三种表单布局的使用方法
- 第三篇Bootstrap网格基础
- 第四篇Bootstrap网格系统偏移列和嵌套列
- JS实现的跨浏览器解析XML文件实例
- eclipse 中的注释 快捷键
- Bootstrap轮播插件简单使用方法介绍
- Javascript随机标签云代码实例
- 第五篇Bootstrap 排版
- 工厂方法模式
- Javascript点击其他任意地方隐藏关闭DIV实例
- Javascript打印局部页面实例
- 第七篇Bootstrap表单布局实例代码详解(三种表单布局)
- JS实现获取剪贴板内容的方法
- 第八篇Bootstrap下拉菜单实例代码