Cascade Classifier
Cascade Classifier
一.基础概念
1.Haar和LBP特征
参考博客:
https://blog.csdn.net/liudongdong19/article/details/81008160
2.主要函数
§ CascadeClassifier() [1/2]
cv::CascadeClassifier::CascadeClassifier ( ) Python: = cv.CascadeClassifier( ) = cv.CascadeClassifier( filename ) § CascadeClassifier() [2/2]
cv::CascadeClassifier::CascadeClassifier ( const String & filename ) Python: = cv.CascadeClassifier( ) = cv.CascadeClassifier( filename ) Loads a classifier from a file.
Parameters
filenameName of the file from which the classifier is loaded.
§ load()
bool cv::CascadeClassifier::load ( const String & filename ) Python: retval = cv.CascadeClassifier.load( filename ) § detectMultiScale() [1/3]
void cv::CascadeClassifier::detectMultiScale ( InputArray image, std::vector< Rect > & objects, double scaleFactor = 1.1
,int minNeighbors = 3
,int flags = 0
,Size minSize = Size()
,Size maxSize = Size()
) scaleFactor
这个是每次缩小图像的比例,默认是1.1minNeighbors
匹配成功所需要的周围矩形框的数目,每一个特征匹配到的区域都是一个矩形框,只有多个矩形框同时存在的时候,才认为是匹配成功,比如人脸,这个默认值是3。minObjectSize
maxObjectSize
:匹配物体的大小范围§ detectMultiScale() [2/3]
void cv::CascadeClassifier::detectMultiScale ( InputArray image, std::vector< Rect > & objects, std::vector< int > & numDetections, double scaleFactor = 1.1
,int minNeighbors = 3
,int flags = 0
,Size minSize = Size()
,Size maxSize = Size()
) § detectMultiScale() [3/3]
void cv::CascadeClassifier::detectMultiScale ( InputArray image, std::vector< Rect > & objects, std::vector< int > & rejectLevels, std::vector< double > & levelWeights, double scaleFactor = 1.1
,int minNeighbors = 3
,int flags = 0
,Size minSize = Size()
,Size maxSize = Size()
,bool outputRejectLevels = false
)
#include "opencv2/objdetect.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"#include <stdio.h>using namespace std;
using namespace cv;/** Function Headers */
void detectAndDisplay( Mat frame );/** Global variables */
String face_cascade_name, eyes_cascade_name;
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
String window_name = "Capture - Face detection";/** @function main */
int main( int argc, const char** argv )
{CommandLineParser parser(argc, argv,"{help h||}""{face_cascade|../../data/haarcascades/haarcascade_frontalface_alt.xml|}""{eyes_cascade|../../data/haarcascades/haarcascade_eye_tree_eyeglasses.xml|}");parser.about( "\nThis program demonstrates using the cv::CascadeClassifier class to detect objects (Face + eyes) in a video stream.\n""You can use Haar or LBP features.\n\n" );parser.printMessage();face_cascade_name = parser.get<String>("face_cascade");eyes_cascade_name = parser.get<String>("eyes_cascade");VideoCapture capture;Mat frame;//-- 1. Load the cascades //加载级联分类器文件if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading face cascade\n"); return -1; };if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading eyes cascade\n"); return -1; };//-- 2. Read the video stream //读取视频流capture.open( 0 );if ( ! capture.isOpened() ) { printf("--(!)Error opening video capture\n"); return -1; }while ( capture.read(frame) ){if( frame.empty() ){printf(" --(!) No captured frame -- Break!");break;}//-- 3. Apply the classifier to the frame//用级联分类器来检测目标图片detectAndDisplay( frame );if( waitKey(10) == 27 ) { break; } // escape}return 0;
}/** @function detectAndDisplay */
void detectAndDisplay( Mat frame )
{std::vector<Rect> faces;Mat frame_gray;cvtColor( frame, frame_gray, COLOR_BGR2GRAY );//颜色空间转换,由于haar和LBP均是对灰度进行处理,所以必须事先转换成灰度equalizeHist( frame_gray, frame_gray );//直方图均衡化//-- Detect faces //检测脸face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CASCADE_SCALE_IMAGE, Size(60, 60) );//在目标图像中检测出脸的矩形轮廓for ( size_t i = 0; i < faces.size(); i++ ){Point center( faces[i].x + faces[i].width/2, faces[i].y + faces[i].height/2 );ellipse( frame, center, Size( faces[i].width/2, faces[i].height/2 ), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );//画出包围脸部的椭圆Mat faceROI = frame_gray( faces[i] );//确定脸部所在的矩形区域为感兴趣区域,然后进行后续的眼睛检测std::vector<Rect> eyes;//矩形向量//-- In each face, detect eyeseyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CASCADE_SCALE_IMAGE, Size(50, 50) );//检测眼部for ( size_t j = 0; j < eyes.size(); j++ ){Point eye_center( faces[i].x + eyes[j].x + eyes[j].width/2, faces[i].y + eyes[j].y + eyes[j].height/2 );int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );circle( frame, eye_center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );//画出眼部所在的圆圈}}//-- Show what you gotimshow( window_name, frame );
}
![](/home/mazh/Pictures/Screenshot from 2019-05-28 16-53-58.png)
Cascade Classifier相关推荐
- 什么是神经网络在object detection的应用?cascade classifier,卷积神经网络,迁移学习
首先 输入,positive image:大黄蜂 negative image:大黄蜂的背景 输出,有多大的概率是大黄蜂 用的是卷积神经网络 卷积神经网络的分类器 在matlab里面是一个xml文件 ...
- OpenCV级联分类器Cascade Classifier
OpenCV级联分类器Cascade Classifier 级联分类器Cascade Classifier 目标 理论 OpenCV中的Haar级联检测 结果 级联分类器Cascade Classif ...
- OpenCV中的级联分类器Cascade Classifier(面部识别)
OpenCV中的级联分类器Cascade Classifier Goal In this tutorial you will learn how to: Use the CascadeClassifi ...
- Python+OpenCV:训练级联分类器(Cascade Classifier Training)
Python+OpenCV:训练级联分类器(Cascade Classifier Training) Introduction Working with a boosted cascade of we ...
- Python+OpenCV:级联分类器(Cascade Classifier)
Python+OpenCV:级联分类器(Cascade Classifier) 目标 We will learn how the Haar cascade object detection works ...
- OpenCV56:级联分类器|Cascade Classifier
目标 在本教程中, 将学习 Haar级联对象检测的工作原理 将使用基于Haar Feature的Cascade分类器了解人脸检测和眼睛检测的基础知识 将使用cv::CascadeClassifier类 ...
- 基于摄像头使用Cascade Classifier做人脸检测的方法及例程
参考文档:http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html 目标: 使 ...
- Cascade Classification
转自:http://opencv.willowgarage.com/documentation/c/objdetect_cascade_classification.html Haar Feature ...
- cascade down_cascade是什么意思_cascade的翻译_音标_读音_用法_例句_爱词霸在线词典...
全部 倾泻 小瀑布 串联 She watched the magnificent waterfall cascade down the mountainside. 她看着壮观的瀑布从山坡上倾泻而下. ...
最新文章
- TCP/UDP对比总结
- spring30: 事务
- Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
- 【渝粤题库】陕西师范大学700005 遗传学
- TYAN联合AMD举办线上研讨会,分享最新第三代AMD EPYC服务器产品
- aes c语言 逆列混合函数,c语言aes列混合和逆列混合的实现(3页)-原创力文档
- html英文字体汇总,笔记 CSS常用中文字体英文名称对照表
- 创建一个vue-cli项目
- Hadoop学习心得一
- 算法介绍及实现——基于遗传算法改进的BP神经网络算法(附完整Python实现)
- 左耳朵耗子 | 技术人员的发展之路
- mt管理器去除应用广告
- 人脸识别模型评价指标:完整梳理
- ActivityManager: Waited long enough for:****Service
- comboFM: leveraging multi-way interactions for systematic prediction of drug combination effects
- ai智能写作如何快速写文?
- vs2015最详细的使用教程(有图)
- 【项目管理心得】周总结与反思
- Word基础(三十三)脚注与尾注的转换
- 广州融媒体峰会现场直播中,BirdDog Full NDI应用有哪些优点?难点?如何解决?
热门文章
- Android 中Uri.parse()的作用
- 电脑进入BIOS界面就傻了?新版BIOS中英文对照图解
- 【转】交换机的Access口与Trunk口:Trunk端口汇聚
- c++实现split函数
- 【绝悟】腾讯最强策略协作型AI开放人机对战,五一节放松一下吧!
- Dubbo 是什么?
- MBD建模规范 stateflow建模 无规矩不成方圆 规范建模行为 提升建模效率 。 主要包含模型接口界面及布局,模块的安全使用、预防易出错的建模模式
- 财管U01 公司理财基本原理 教材解读
- dell venue 7 linux,64位处理器 戴尔全新Venue 7平板评测
- 【自动化测试不求人】行为驱动behave环境搭建