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实现人脸检测
		全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ... 
- OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现
		# OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现 [-= 博客目录 =-] 1-学习目标 1.1-本章介绍 1.2-实践内容 1.3-相关说明 2-学习过程 2.1-环 ... 
- OpenCV实现人脸检测
		OpenCV实现人脸检测(转载) 原文链接:https://www.cnblogs.com/mengdd/archive/2012/08/01/2619043.html 本文介绍最基本的用OpenC ... 
- Python学习--使用dlib、opencv进行人脸检测标注
		参考自https://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/ 在原有基础上有一部分的修改(image ... 
- Java+opencv实现人脸检测
		版本 Java1.8 opencv3.4 代码: import java.awt.Graphics; import java.awt.image.BufferedImage; import javax ... 
- python中使用Opencv进行人脸检测
		这两天学习了人脸识别,看了学长写的代码,边看边码边理解搞完了一边,再又是自己靠着理解和记忆硬码了一边,感觉还是很生疏,就只能来写个随笔加深一下印象了. 关于人脸识别,首先需要了解的是级联分类器Casc ... 
- OpenCV-Python(1)在Python中使用OpenCV进行人脸检测
		OpenCV是如今最流行的计算机视觉库,而我们今天就是要学习如何安装使用OpenCV,以及如何去访问我们的摄像头.然后我们一起来看看写一个人脸检测程序是如何地简单,简单到只需要几行代码. 在开始之前, ... 
- [转]让opencv输出人脸检测的得分(置信率)
		转自:http://www.cnblogs.com/sciencefans/ 作者:sciencefans 最近项目略多,其中一个需要找出一些和脸比较像但是不是脸的负样本,想用opencv的人脸检测器 ... 
- 让opencv输出人脸检测的得分(置信率)
		最近项目略多,其中一个需要找出一些和脸比较像但是不是脸的负样本,想用opencv的人脸检测器检测到的错误脸作为这样的负样本. 但是国内(包括国外)居然几乎没有相关的资料如何输出detectMultiS ... 
随机推荐
- 6.3.2 使用struct模块读写二进制文件
			使用 struct 模块需要使用 pack() 方法吧对象按指定个数进行序列化,然后使用文件对象的write方法将序列化的结果写入二进制文件:读取时需要使用文件对象的read()方法读取二进制文件内容 ... 
- [bzoj1342][Baltic2007]Sound静音问题_单调队列
			Sound静音问题 bzoj-1342 Baltic-2007 题目大意:给定一个n个数的序列,求所有的长度为m的区间,使得区间内最大值减去最小值不超过阈值c. 注释:$1\le n \le 10^6 ... 
- [bzoj3061][Usaco13Feb]Partitioning the Farm_动态规划_状压dp
			Partitioning the Farm bzoj-3061 Usaco13Feb 题目大意:给定一个n*n的方格图,用k条贯穿方格图的直线将整个方格图分割,使得每一块的权值和的最大值最小. 注释: ... 
- UVA 10891 区间DP+博弈思想
			很明显带有博弈的味道.让A-B最大,由于双方都采用最佳策略,在博弈中有一个要求时,让一方的值尽量大.而且由于是序列,所以很容易想到状态dp[i][j],表示序列从i到j.结合博弈中的思想,表示初始状态 ... 
- Oracle 自己主动内存管理 SGA、PGA 具体解释
			ASMM自己主动共享内存管理: 自己主动依据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 SYS@PROD>show parameter sga NAME ... 
- Zend_Form 创建、校验和解析表单的基础--(手冊)
			1. 创建表单对象 创建表单对象很easy:仅仅要实现 Zend_Form: <?php $form = newZend_Form; ? > 对于高级用例.须要创建 Zend_Form ... 
- 瀑布流 ajax 预载入 json
			pbl.json[模拟后台json数据]: [ { "id": "511895", "title": ... 
- SharePoint 2013 关闭 customErrors
			在SharePoint 2013上做开发时,如果不把customErrors 关掉,那调试起来那真叫一个费劲.在2013里,关闭customErrors 和2010一样,只要把文件路径改成15目录下即 ... 
- QPS计算
			案例:公司xiaoyb性能测试评估 我们预估支持500家学校,每所学校300人,每天有10%的活跃率,每天有500*300*10%=15000人,每人每天平均请求20次,每天大概请求时间共8小时,80 ... 
- Mahout算法调用展示平台2.1
			软件版本号: windows7: Tomcat7.JDK7.Spring4.0.2.Struts2.3.Hibernate4.3.myeclipse10.0.easyui:Linux(centos6. ... 
