OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification)。注意,新版本的C++接口除了Haar特征以外也可以使用LBP特征。
先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包括读操作read、复制clone、获得特征类型getFeatureType,分配图片分配窗口的操作setImage、setWindow,计算有序特征calcOrd,计算绝对特征calcCat,创建分类器特征的结构create函数。级联分类器类CascadeClassifier。目标级联矩形的分组函数groupRectangles。
接下来,我尝试使用CascadeClassifier这个级联分类器类检测视频流中的目标(haar支持的目标有人脸、人眼、嘴、鼻、身体。这里尝试比较成熟的人脸和眼镜)。用load函数加载XML分类器文件(目前提供的分类器包括Haar分类器和LBP分类器(LBP分类器数据较少))具体步骤如下:
1)加载级联分类器
调用CascadeClassifier类成员函数load实现,代码为:
2)读取视频流
这部分比较基础啦~~从文件中读取图像序列,读取视频文件,读取摄像头视频流看过我之前的文章,这3种方法应该了然于心。
3)对每一帧使用该分类器
这里先将图像变成灰度图,对它应用直方图均衡化,做一些预处理的工作。接下来检测人脸,调用detectMultiScale函数,该函数在输入图像的不同尺度中检测物体,参数image为输入的灰度图像,objects为得到被检测物体的矩形框向量组,scaleFactor为每一个图像尺度中的尺度参数,默认值为1.1,minNeighbors参数为每一个级联矩形应该保留的邻近个数(没能理解这个参数,-_-|||),默认为3,flags对于新的分类器没有用(但目前的haar分类器都是旧版的,CV_HAAR_DO_CANNY_PRUNING利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域,CV_HAAR_SCALE_IMAGE就是按比例正常检测,CV_HAAR_FIND_BIGGEST_OBJECT只检测最大的物体,CV_HAAR_DO_ROUGH_SEARCH只做初略检测),默认为0.minSize和maxSize用来限制得到的目标区域的范围。这里调用的代码如下:
4)显示目标
这个也比较简单,调用ellips函数将刚才得到的faces矩形框都显示出来
更进一步,也可以在得到的每一幅人脸中得到人眼的位置,调用的分类器文件为haarcascade_eye_tree_eyeglasses.xml,先将脸部区域选为兴趣区域ROI,重复上诉步骤即可,这里就不详细介绍了。当然,感兴趣的朋友也可以试试其他的xml文件作为分类器玩一下啊,感觉LBP特征虽然xml文件的大小很小,但效果还可以,不过我没有做过多的测试。光说不练假把式,最后贴上效果图和源代码的下载地址
代码下载地址:http://download.csdn.net/detail/yang_xian521/3800468
分享到:
相关推荐
级联分类器下载,训练模型 下载直接可用
基于OpenCV的级联分类器识别中国象棋棋子python源码+象棋分类数据集+项目说明+注释拉满.zip 【项目资源介绍】 使用OpenCV的级联分类器识别中国象棋棋子 OpenCV级联分类器模型训练 文件夹内容: Dataset_Red_Black...
opencv训练行人检测级联分类器正样本数据,92个,彩色版,尺寸都不同,自行用代码转尺寸,如果要灰度图也自行用代码转
haartraining+objectmarker,opencv,Adaboost级联分类器训练工具包,里面包含所有用来训练opencv里基于haar特征的adaboost级联分类器的工具,可以用来训练人脸检测,车辆检测等对象检测的级联分类器
人工智能_机器学习_人脸识别_OpenCV之级联分类器CascadeClassifier_Python代码实现
各类opencv级联分类器,眼睛,人脸,全身,半身级联年分类器,可人脸检测、眼睛检测、行人识别等。
使用OpenCV的Haar特征训练身份证级联分类器的训练环境
http://write.blog.csdn.net/postedit/72846640有介绍哦
opencv 人脸识别
级联分类器检测人脸,并定位脸部、眼睛和嘴巴,用到OPENCV分类器
基于OpenCV级联分类器识别中国象棋棋子项目python源码+数据集+说明.zip主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的学习者。包含全部项目源码、该项目可以直接使用、项目都经过...
包括:haarcascade_eye.xml、haarcascade_eye_tree_eyeglasses.xml、haarcascade_frontalcatface.xml、haarcascade_fullbody.xml、haarcascade_lefteye_2splits.xml、haarcascade_lowerbody.xml、haarcascade_...
告别繁琐步骤,用Python脚本一键训练自己的目标检测数据集 i Only need to Click Once
OpenCV利用级联的haar分类器进行人脸识别
python实现基于OpenCV的级联分类器识别中国象棋棋子源码+数据集(高分期末大作业).zip个人98分期末大作业项目,代码完整下载可用。主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的...
Haar/LBP/HOG ①特征=w1*(RectSum1)+w2*(RectSum2) ... //加载opencv中预训练过的级联器.xml String cascadeFilePath = ../path/haarcascade_frontalface_alt.xml; //CascadeClassifier是opencv下obj
基于OpenCV+vs2008的手势检测,检测英文字母A的手势,利用了OpenCV的haar特征级联分类器,效果可好
OpenCV级联分类器训练与使用教程与代码11111111111111111111111
opencv-python使用GPU资源--虚拟环境安装与编译opencv源码(csdn)————程序
OpenCV 自带了训练器和检测器。通过opencv构建出的火焰识别的训练集。Cascade Classifier Training OpenCV 已经包含了很多已经训练 好的分类器,但没有火焰的训练器