opencv训练xml过程中的问题及解决⽅法
---环境准备---
系统:win10
python版本:python2.7
opencv版本:opencv2.3.1
其他:pip,numpy
1. 先通过pip下载numpy
2. opencv的安装是双击exe⽆脑安装,选择存放的路径(E:\software\opencv)
3. 关联opencv和python,将(E:\software\opencv\build\python\2.7)下的⽂件拷贝到(C:\Python27\lib\site-packages)下
4. 管理员权限打开命令⾏,输⼊python  >>>import cv2,不报错即为安装成功
---数据准备---
本⼈是为了通过opencv训练属于⾃⼰的xml,所以采样也是⾃⼰⽤⼿机拍的,拍出来的图⽚是3062*2062的,所以图⽚很⼤,⼀张都得要1M 多,所以需要对数据进⾏预处理,结果如下:
正样本(预检测物体):500张
负样本(不包含检测物体的背景图):1500张
正负样本:均为 500px * 500px;均为灰度图
新建⼀个xpider_xml⽂件夹作为项⽬根⽬录,正样本存放在pos/中,负样本存放在neg/中
---准备exe⽂件---
1. ⾸先我们需要两个exe⽂件,分别为: 和 ,这两个⽂件在我们安装的
(E:\software\opencv\build\common 86)⽬录下可以到,复制过来就⾏
---创建正负样本txt⽂件---
1. 命令⾏进⼊pos/⽬录,输⼊以下命令,在pos/下就会⽣成⼀个⽂件,将他剪切到根⽬录
dir /b &
2. 然后修改中的字符串,达到以下格式
【1 :该样本数⽬为1;0 0 :表⽰样本起始坐标;500 500 : 表⽰样本宽⾼】
修改⽅法:将txt⽂件在sublime中打开,按住⿏标滚轮,往下拖,即可选中当前列;按⼀下键盘的“END”键,光标即修改⽅法
可跳转到字符串尾部
3. ⽂件同上,格式稍有不同,最后 和 如下:
python处理xml文件
---创建vec⽂件---
管理员权限命令⾏进⼊xpider_xml根⽬录,输⼊以下命令(只需对pos正样本进⾏这步操作,负样本不做处理)
-vec pos.vec - -num 500 -w 500 -h 500
-vec : 输出⽣成的⽂件路径
-info : 正样本的路径txt⽂件
-num : 正样本的数量
-w -h : 样本宽⾼
---报错及解决---
1. 运⾏以上代码时,报(⽆法启动此程序,因为计算机丢失opencv_imgpro231.dll)等⼀系列dll丢失的错误
解决:将包含dll⽂件的⽬录(E:\software\opencv\build 86\vc10\bin),添加到系统环境变量PATH中即可
添加完环境变量后,记得重启命令⾏
2. 再次运⾏时,报(⽆法启动此程序,因为计算机丢失tbb.dll)的错误
解决:到opencv安装⽬录(E:\software\opencv\build\common\tbb\ia32\vc10)下的tbb.dll⽂件,复制到(C:\Windows\SysWOW64)即可
重启命令⾏
3. 再次运⾏,成功⽣成vec⽂件
---训练⽣成xml---管理员权限命令⾏进⼊xpider_xml根⽬录,输⼊以下命令:
-data xml -vec pos.vec - -numPos 500 -numNeg 1500 -numStages 20 -w 500 -h 500 -minHitRate 0.9999 -maxFalseAlarmRate 0.5 -mode ALL
-data : 存放xml⽂件的⽬录
-vec : 正样本vec⽂件源
-bg : 负样本路径txt⽂件
-numPos : 正样本数量
-numNeg : 负样本数量
numStages:训练分类器的级数
-w -h : 样本宽⾼
-minHitRate :分类器的每⼀级希望得到最⼩检测率(即正样本被判断有效的⽐例)
-maxFalseAlarmRate:分类器的每⼀级希望的最⼤误检率(负样本判定为正样本的概率)
-mode: 选择训练中使⽤的Haar特征类型。BASIC只使⽤右上特征,ALL使⽤所有右上特征及45度旋转特征
---报错及解决---
运⾏以上代码时,报(已停⽌⼯作已停⽌⼯作)(OpenCV Error: Insufficient memory (Failed to allocate OpenCV Error: Insufficient memory (Failed to allocate 65408 bytes) in unknown function )的错误
这种错误导致的原因是样本太⼤,机器分配训练的内存不够导致的。
所以我们最初把样本压缩成500px * 500px还是太⼤了,所以重新再把样本压缩为50px * 50px
---继续训练---
照着上⾯的步骤,重新⽣成 pos.vec,再次运⾏训练的代码,效果如下,顺利进⾏训练
当训练完毕以后,出现以下错误(Parameters can not be written, because file l can not be opened.):
这种错误是根⽬录下没有xml⽬录造成的,所以要预先创建⼀个xml/空⽬录
后来在另⼀台机器上训练时,报了( Opencv Error: Unspecified Error(empty Filename) in Unknown Function )的错误,google之后
到了这个答案
说是windows系统出现了错误,导致这种问题的原因有很多,需要对系统进⾏修复,在链接⾥有软件的下载地址,不过这个软件要6⼑,果断放弃
在windows系统训练,回到Linux进⾏训练,传送门在此。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。