OpenCV: OpenCV人脸检测框可信度排序
参考文章:http://blog.csdn.net/hua_007/article/details/45368607
使用OpenCV进行人脸识别时,使用
casecade.detectMultiScale
函数,可输出每个检测框的置信度
代码段:
const int numReserve = 4;
std::vector< int > rejLevel;
std::vector<double> levelW;
cascade.detectMultiScale( smallImg, eyes, rejLevel, levelW, 1.1, 3, 0, cv::Size(), cv::Size(), true);
cout << "eyes size=:" << eyes.size() << endl;// 重新排序
std::vector<std::pair<float, int> > eyeConfi;
for (int i = 0; i < (int)(eyes.size()); i++){eyeConfi.push_back(std::make_pair(levelW[i], i));
}
std::qsort(&eyeConfi[0], eyeConfi.size(), sizeof(eyeConfi[0]), cmpMapWishchin);//重新获取,只取前四个
for (int i = 0; i < (int)(eyes.size()) && i<numReserve ; i++)
{cv::Rect eyeSin = eyes[eyeConfi[i].second];eyesFinal.push_back(eyeSin) ;
}
函数原型:
CV_WRAP virtual void detectMultiScale( const Mat& image,CV_OUT vector<Rect>& objects,vector<int>& rejectLevels,vector<double>& levelWeights,double scaleFactor=1.1,int minNeighbors=3, int flags=0,Size minSize=Size(),Size maxSize=Size(),bool outputRejectLevels=false );
cmp函数:
int cmpMapWishchin(const void *p1, const void *p2){int v = 1;std::pair<float, int > *pp1, *pp2;pp1 = (std::pair<float, int > *) p1;pp2 = (std::pair<float, int > *) p2;//最大值排序if (pp1->first - pp2->first < 0){v = 1;}else{v = -1;}return (v);}
函数的原理是这样的(个人理解,有错误请指教):
首先一个level一个level地测试样本,然后每一个level给一个对应的得分,也就是levelWeight,如果这个weight低于或者高于对应level的threshold,则被抛弃。
坚持到最后一个level并且在最后一个level仍然满足threshold的框就是正确的脸(正样本)。
所以,人脸的分应该是这样:level越大,分数越高,在相同的level,levelWeight越大分数越高。
但是实际上真正的人脸都是能坚持到level20(最后一个level)的,所以只比对最后一个level的所有大于1的框的levelWeight进行比对就可以知道脸的得分啦~
试验结果:
OpenCV: OpenCV人脸检测框可信度排序相关推荐
- 【OpenCV实战】OpenCV实现人脸检测详解(含代码)
OpenCV中有许多可以进行人脸.人眼检测的特征文件,今天我们利用OpenCV中自带的特征文件haarcascade_frontalface_default.xml来进行人脸检测. [OpenCV实战 ...
- Python图像处理,cv2模块,OpenCV实现人脸检测蔡徐坤
前言 利用Python实现OpenCV实现人脸检测,废话不多说~ 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: cv2模块: 以及一些Python自带的模块. 环境搭建 ...
- flutter 人脸检测_【转载】opencv实现人脸检测
全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ...
- opencv实现人脸检测、性别和年龄预测
opencv实现人脸检测.性别和年龄预测 文章目录: 一.下载预训练的模型 1.下载模型 2.模型说明 二.实现步骤 1.加载模型 2.人脸检测 3.性别与年龄预测 4.完整代码 主要是通过openc ...
- 利用OpenCV实现人脸检测
如何在一副图片中检测到人脸,这涉及到计算机图形学中一些非常复杂的计算,如果这些计算都靠程序员自己来编程,那么工作量就相当大.OpenCV全称是Open Computer Vision,是指开放的计算机 ...
- 【opencv】人脸检测(图片实时)
■ 人脸检测(图片) 原图像: 在使用OpenCV的人脸检测之前,需要一个人脸训练模型,格式是xml的,我们这里使用OpenCV提供好的人脸分类模型xml,下载地址:https://g ...
- 使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)
需要源码和图片请点赞关注收藏后评论区留言私信~~~ 人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,也是计算机视觉重点发展的技术.机器学习算法诞生之后,计算机可以通过摄像头等输入设备自 ...
- OpenCV实现人脸检测和68点定位
人脸对比是现在比较常用的功能,比如出租车司机人脸与司机驾照照片对比,门禁系统中进入者的人脸与人脸库中的人脸进行对比.要实现人脸对比,首先要实现的是人脸检测,在摄像头拍摄到的一张图片中,正确的检测到人脸 ...
- 基于opencv的人脸检测(图片、视频、摄像头)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.检测图片中的人脸 二.检测视频与摄像头中的人脸 总结 前言 人脸检测识别一直是个热门的研究问题,同时也是opencv中 ...
最新文章
- 我的软考之路(九)——总结篇
- 了解和入门注解的应用
- 一个简单的DELPHI自定义事件的例子(转)
- 第一集 企业IT体系结构
- 移动端浏览器body的overflow:hidden并没有什么作用
- h5 时间控件问题,怎么设置type =datetime-local 的值
- php 可维护性的代码,软件的可复用性和可维护性
- embedding在推荐系统中的应用总结,这些你知道吗?
- cad 万能字体_CAD:“你的图纸缺少shx字体!”不知道该怎么办?不存在的!
- 二叉树层级打印(分层次和不分层次)
- 大数据、物联网、AI 等技术正当时!
- win7开放80端口
- Nginx从入门到精通(全)
- LOJ10068(BZOJ1977)(Luogu4180)
- MySQL学习笔记[学习资料来源于B站黑马测试]
- JavaWeb项目——疫情数据可视化
- be idle sometimes to_一生中不该错过的经典语录,深刻有道理,看了让人爱不释手!...
- 5.3.4—二叉查找树—Convert Sorted Array to Binary Sear Tree
- 婚恋相亲源码-视频相亲app将会是直播的下一个风口吗?
- PDF文档用什么软件打开?