opencv 构造训练器
D:/face 构造face训练器为例
一:样本创建
训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本,反例样本指其它任意图片。
负样本可以来自于任意的图片,但这些图片不能包含目标特征。负样本由背景描述文件来描述。背景描述文件是一个。
创建 正 负 样本目录
mkdir D:\face\posdata
mkdir D:\face\negdata
把正负样本图片,分别放入2个文件夹下。
生成负样本描述文件
cd D:\face\negdata
dir /b > negdata.dat #删除negdata.data的最后一行,因为最后一样是描述文件本身。
生成正样本描述文件
cd D:\face\posdata
dir /b > posdata.dat #删除posdata.data的最后一行,因为最后一样是描述文件本身
然后为 posdata.dat 中的每一行后加上文件描述擦数(图片个数,目标开始,结束位置,高,宽),例如
1.jpg 1 1 1 23 23
2.jpg 1 1 1 23 23
使用createsamples命令生成正例训练.vec文件。
opencv_createsamples -info D:\face\posdata\posdata.data
-vec D:\face\data\pos.vec
-num 10 -w 20 -h 20
运行后生成的pos.vec 文件作后面的训练用
二:训练分类器
使用 traincascade(opencv2 中只有haartrainning命令,注意版本2个3的参数格式稍有不同)。
命令如下:
opencv_traincascade -data D:\face\data\cascade #分类器的存放路径
-vec D:\face\data\pos.vec #正样本的vec文件
-bg D:\face\negdata.dat #付样本描述文件
-numPos 10 #正样图片文件本个数
-numNeg 10 #付样本图片文件个数
-numStages 5 #训练阶段数,根据样本数量而定,太大,会提示错误:Train dataset for temp stage can not be filled. .
-mode ALL #训练的haar特征集的种类。basic仅仅使用垂直特征。all使用垂直和45度角旋转特征。
-w 20 -h 20 #样本宽和高
如果参数都设置对了,任然报错误:Train dataset for temp stage can not be filled. Branch training terminated.
可能是 -gb 参数不带文件名称, 那可以付样本的描述文件放到执行目录,负样本的描述内容增加图片位置的路径来解决。
最后没有报错,会在-data的路径下生成训练文件。
三:利用训练好的分类器,做检测
##TODO 还没有找到performance.exe程序
performance.exe
使用python-cv2 调用生成的分类器:
import cv2
cascade = cv2.CascadeClassifier('D:\face\data\cascade\cascade.xml')
faces = cascade .detectMultiScale(gray, 1.3, 5)
opencv 构造训练器的更多相关文章
- Pytorch之训练器设置
Pytorch之训练器设置 引言 深度学习训练的时候有很多技巧, 但是实际用起来效果如何, 还是得亲自尝试. 这里记录了一些个人尝试不同技巧的代码. tensorboardX 说起tensorflow ...
- 秒懂C#通过Emit动态生成代码 C#使用Emit构造拦截器动态代理类
秒懂C#通过Emit动态生成代码 首先需要声明一个程序集名称, 1 // specify a new assembly name 2 var assemblyName = new Assembly ...
- 13 opencv训练器
https://blog.csdn.net/WZZ18191171661/article/details/91305466 https://blog.csdn.net/qq_25352981/arti ...
- 【macOS】 在OpenCV下训练Haar特征分类器
本教程基于以下环境 macOS 10.12.6,OpenCV 3.3.0,python 3.6.由于网上基于masOS系统的教程太少,想出一篇相关教程造福大家-本文旨在学习如何在opencv中基于ha ...
- opencv python训练人脸识别
总计分为三个步骤 一.捕获人脸照片 二.对捕获的照片进行训练 三.加载训练的数据,识别 使用python3.6.8,opencv,numpy,pil 第一步:通过笔记本前置摄像头捕获脸部图片 将捕获的 ...
- C#使用Emit构造拦截器动态代理类
在AOP编程概念介绍中,常见的示例为拦截对象,并在对象的某方法执行前和执行后分别记录日志. 而最常用的拦截方式是使用动态代理类,用其封装一个日志拦截器,当方法被执行时进行日志记录. 日志拦截器类 1 ...
- Opencv 简单视频播放器
// C++ header and namespace #include <iostream> #include <string> #include <cstdlib&g ...
- 【原/转】opencv的级联分类器训练与分类全程记录
众所周知,opencv下有自带的供人脸识别以及行人检测的分类器,也就是说已经有现成的xml文件供你用.如果我们不做人脸识别或者行人检测,而是想做点其他的目标检测该怎么做呢?答案自然是自己训练一个特定的 ...
- 机器学习进阶-目标追踪-SSD多进程执行 1.cv2.dnn.readnetFromCaffe(用于读取已经训练好的caffe模型) 2.delib.correlation_tracker(生成追踪器) 5.cv2.writer(将图片写入视频中) 6.cv2.dnn.blobFromImage(图片归一化) 10.multiprocessing.process(生成进程)
1. cv2.dnn.readNetFromCaffe(prototxt, model) 用于进行SSD网络的caffe框架的加载 参数说明:prototxt表示caffe网络的结构文本,model ...
随机推荐
- 运用HBuilder上传到GitHub
Hbuilder安装github插件 如图所示: 一.打开自己GitHub,新建一个"库" 2.设置自己项目名和简介 3.建完后,就会显示GitHub要上传路径 4.打开" ...
- 利用xshell从windows上传文件到虚拟机
Xshell实现Windows上传文件到Linux主机 经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下:之前我 ...
- Android 开发60条技术经验总结(转)
Android 开发60条技术经验总结: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. ...
- ThreadLocal 笔记
synchronized 同步的机制可以解决多线程并发问题,这种解决方案下,多个线程访问到的都是同一份变量的内容.为了防止在多线程访问的过程中,可能会出现的并发错误.不得不对多个线程的访问进行同步,这 ...
- GUI编程笔记(java)01:GUI和CLI
GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Command line User Interface ( ...
- 通过开发工具发布web应用到tomcat服务器中--对于小白,大神可以忽略不看,勿喷,谢谢
需要的工具 MyEclipse和TomCat 本人用的是MyEclipse2014和TomCat7 TomCat结构图 第一步:在MyEclipse中配置TomCat 如图所示: 第二步:创建Web项 ...
- HTML+CSS基础学习笔记(5)
一.文字排版--字体 Eg: body{font-family:"宋体";} body{font-family:"Microsoft Yahei";}//微软雅 ...
- Video事件、方法-- DOM
<video> 元素同样拥有方法.属性和事件.其中的方法用于播放.暂停以及加载等.其中的属性(比如时长.音量等)可以被读取或设置.其中的 DOM 事件能够通知您,比方说,<video ...
- H TML5 之 (4) 小项目一 时钟
这里做一个HTML5 入门的练手,一个小时钟项目,可以再上面拓展很多,程序员培养的就是思想 <!DOCTYPE HTML> <html> <head> <ti ...
- 样式优先级、margin
margin:上 左 下 右: