opencv - haar人脸特征的训练

step 1: 把正样品,负样品,opencv_createsamples,opencv_haartraining放到一个文件夹下面,利于后面的运行。
step 2: 生成正负样品的描述文件

正样品描述文件
find positive_boosted -iname "*.bmp" -exec echo \{\} 1 0 0 20 20 \; > face.info
生成
positive_boosted/face00244.bmp 1 0 0 20 20
positive_boosted/face00177.bmp 1 0 0 20 20
positive_boosted/face01533.bmp 1 0 0 20 20
positive_boosted/face01542.bmp 1 0 0 20 20
positive_boosted/face00733.bmp 1 0 0 20 20
positive_boosted/face01708.bmp 1 0 0 20 20
positive_boosted/face01625.bmp 1 0 0 20 20

其中的pos_image/是相对路径名,后面紧接着的是文件名,1代表一个文件,0 0 24 24表示这个文件的2个顶点位置坐标。保存退出即ok。

负样品描述文件
find negative_boosted -iname *.bmp > non_face.txt
生成  
negative_boosted/face01542.bmp
negative_boosted/face00733.bmp
negative_boosted/face01708.bmp
negative_boosted/face01625.bmp

step 3: 生成vec文件
opencv_createsamples -vec face.vec -info face.txt -bg non_face.txt  -w 20 -h 20 -num 2429
其中的-vec是指定后面输出vec文件的文件名,-info指定正样本描述文件,-bg指定负样本描述文件,-w和-h分别指正样本的宽和高,-num表示正样本的个数。执行完该命令后就会在当前目录下生产一个face.vec文件了。

step 4: 开始训练
首先在当前目录下新建一个xml文件夹用于存放生成的.xml文件。
opencv_haartraining  -data xml -vec face.vec -bg non_face.txt -npos 500 -nneg 500 -w 20 -h 20 -nstages 20 -nsplits 2 -minhitrate 0.999 -maxfalsealarm 0.5

opencv_traincascade (新的命令)
 其中
    -data为输出xml中间文件的位置;
    -vec 正样品文件名
    -bg  负样本文件名
    -nsplits 1表示使用简单的stump classfier分类。
    -mode (default|all) all表示使用haar特征集的种类既有垂直的,又有45度角旋转的; default只是垂直的.
    -npos  正样本数
    -nneg    负样本
    -minhitrate 最小命中率,即训练目标准确度。
    -maxfalsealarm最大虚警(误检率),每一层训练到这个值小于0.5时训练结束,进入下一层训练

在实际训练时,为了节约时间,调小了npos,nneg

会产生xml.xml文件,可以利用所得到的分类器进行测试了。

step 5: 合并训练所产生的xml文件
   生成多个

时间: 2024-12-18 00:42:13

opencv - haar人脸特征的训练的相关文章

万张PubFig人脸数据实现基于python+OpenCV的人脸特征定位程序(1)

在最近刷今日头条以及其他媒体软件时,经常会发现一些AI换脸的视频,于是我想,可不可以自己实现一个可以进行人脸识别的软件程序.我的具体流程是先配合python网络爬虫先进行万张PubFig人脸公共图片的爬取,分析出图片具体特征,然后再配合机器学习的OpenCV视觉库进行软件的构建.有一篇Github的文章讲得很详细,大家可以参考:https://github.com/Hironsan/BossSensor. 前几篇博客先向大家讲解如何爬取PubFig人脸数据,然后本片的话先用一些动漫人脸图片,向大

基于QT和OpenCV的人脸识别系统

1 系统方案设计 1.1 引言 人脸是一个常见而复杂的视觉模式,人脸所反映的视觉信息在人与人的交流和交往中有着重 要的作用和意义,对人脸进行处理和分析在视频监控.出入口控制.视频会议以及人机交互等领 域都有着广泛的应用前景,因此是模式识别和计算机视觉领域持续的研究热点. 本系统在 FriendlyARM Tiny6410 开发板基础上,利用 OpenCV 计算机视觉库和 QT 图形库,通 过普通的 USB 摄像头实现了自动人脸识别,准确率较高,方便易用. 1.2 系统总体架构 "人脸识别&quo

基于 OpenCV 的人脸识别

基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影. OpenCV 起始于 1999 年 Intel 的一个内部研究项目.从那时起,它的开发就一直很活跃.进化到现在,它已支持如 OpenCL 和 OpenGL 的多种现代技术,也支持如 iOS

OpenCV摄像头人脸识别

注: 从外设摄像装置中获取图像帧,把每帧的图片与人脸特征进行匹配,用方框框住识别出来的人脸 需要用到的函数: CvHaarClassifierCascade* cvLoadHaarClassifierCascade( const char* directory, CvSize orig_window_size ); 第一个参数:训练好的级联分类器的路径 第二个参数:级联分类器训练中采用的检测目标的尺寸 #include "stdafx.h" #include "iostrea

基于openCV实现人脸检测

openCV的人脸识别主要通过Haar分类器实现,当然,这是在已有训练数据的基础上.openCV安装在 opencv/opencv/sources/data/haarcascades_cuda(或haarcascades)中存在预先训练好的物体检测器(xml格式),包括正脸.侧脸.眼睛.微笑.上半身.下半身.全身等. openCV的的Haar分类器是一个监督分类器,首先对图像进行直方图均衡化并归一化到同样大小,然后标记里面是否包含要监测的物体.它首先由Paul Viola和Michael Jon

基于python+opencv的人脸检测+

人脸检测分为两种:一种是基于知识的,一种是基于深度学习的.深度不会学习 人脸识别属于目标检测,主要涉及两个方面: ①先对检测的物体进行概率统计,从而知道待检测对象的一些特征,建立其目标的检测模型 ②用得到的模型来匹配输入的图像,如果有匹配则则输出匹配的区域,否则什么也不做. 我们看到的图片和计算机不一样,计算机看到的是一串串数字矩阵,图片由多个像素组成,拿我们熟悉的RGB图像来说,每个像素又有红绿蓝三个通道,假如每个像素的单个通道由uint8类型字符组成,那么三通道的像素便会有24位,这是我们常

人脸特征

---恢复内容开始--- 人脸识别中最核心的部分就是特征表示,人脸识别的发展史更多是人脸特征的发展. 优秀的人脸特征必须满足以下条件: 对类间变化十分敏感,如在人脸检测时,能非常有效地区分出背景区域和人脸区域,在识别时,能对不同人的细微区别十分敏感: 对类间变化具有一定的不变性,要求特征对人脸角度.光照变化.表情变化等具有一定的不变性. 人脸特征分类: 像素灰度值特征:最简单的人脸特征,包含全部人脸信息. 有监督特征:Haar, LBP, SIFT, HOG, Gabor, TPLBP, FPL

OpenCV检测人脸实例代码

下面是使用OpenCV通过在硬盘中读入图像来对其进行Haar人脸检测的代码. //包含头文件 #include <opencv2/core/core.hpp> #include "cv.h" #include "highgui.h" int main() {     const char* cascade_name = "C:\\opencv249\\sources\\data\\haarcascades\\haarcascade_fronta

【dlib代码解读】人脸检测器的训练【转】

转自:http://blog.csdn.net/elaine_bao/article/details/53046542 版权声明:本文为博主原创文章,转载请注明. 目录(?)[-] 综述 代码解读 step by step 1 预处理阶段 11 载入训练集测试集 12 图片上采样 13 镜像图片 2 训练阶段 21 定义scanner用于扫描图片并提取特征 22 设置scanner扫描窗口大小 23 定义trainer用于训练人脸检测器 24 训练生成人脸检测器 25 测试 3 tips 31