前言
在...\opencv\build\x64\vc14\bin的目录下存在opencv_traincascade.exe和opencv_createsamples.exe两个程序,我们能利用它们来进行机器学习,并实现物体检测。下面来说说具体实现步骤。
架构如下:
源码:https://github.com/YingjieZhang31/Cascade-Classifier
一、提供负样本图片集并得到其索引文件neg.txt
例如:我们将负样本保存到neg文件夹内,如下:
之后,需要写一个脚本得到负样本的索引位置,效果如下:
二、提供正样本图片并保存到pos文件夹下
将预处理好的正样本移动到pos文件夹下,提供的正样本越多越好。如果正样本数量不够也可以通过在cmd下输入opencv_createsamples.exe-img sample.jpg -bg neg.txt -info pos.txt -maxxangle 0.5 -maxyangle -0.5 -maxzangle 0.5 -num XXXX(需要的正样本数量)来制作正样本集,具体原理网上资料很多,但需要注意的是这种方法提供的正样本效果很差,难以训练得到比较好的*.xml模型。所以推荐第一种方法。
关于正样本的预处理:首先将正样本从原图中抠出来,并重新调整大小ÿ