环境: Ubuntu 12.4, OpenCV, 光影魔术手4, ObjectMarker
步骤如下:
1. 首先收集要探测的物体图片(正样本)和背景图片(负样本),使用“光影魔术手”批处理图片为固定大小和bmp格式
2. 使用ObjectMarker来抽取物体图片(正样本)生成info.txt,内容如下:
rawdata/136e2b8aef176609829e23e54081db6d.bmp 1 149 36 127 193
rawdata/203d730e146b11af60eef38b5ee280a1.bmp 1 52 92 175 201
rawdata/21b7e18952a3af2975fb407510af943e.bmp 1 82 102 135 182
rawdata/2f9ed3b7e3c87b0890bcdd94fae54415.bmp 1 45 28 190 230
3. 将info.txt文件和正负物体图片导入到Ubuntu环境内。
4. 在背景图片中生成bg.txt文件,内容为相应的文件名:
jerry@hq:~$ more neg_pic/bg3.txt
c15108780ef9f873650f3cbd0259fa6f.bmp
e4f1dce1ed15262848f0b9e0efb0ad56.bmp
6c7fc84c405201ba2a92c38e5f828966.bmp
a00f7dc3c16e8b31d16bb9122f34aa0c.bmp
cad04ea931db04381bb5fed9cb8dea61.bmp
056f0cd1d04d62dfa4ab9fdb0b6c052b.bmp
95f5c539316d9261a83b3a98d90eac58.bmp
08178909a71d88750fc35d5b87e838fd.bmp
4. 准备训练数据
jerry@hq:~$ opencv_createsamples -info info.txt -vec pic.vec -w 30 -h 30 -b neg_pic/bg.txt -num 26
5. 训练haar分类器
jerry@hq:~$ mkdir cascade_data
jerry@hq:~$ opencv_traincascade -data cascade_data -vec pic.vec -bg neg_pic/bg3.txt -w 30 -h 30 -numPos 26 -numNeg 50 -numStages 10