Opencv检测自定义目标
Opencv检测自定义目标
ps:本人也是最近刚开始接触图像,写的不好的地方或者有错的地方请见谅或指教~~~~~~
这里介绍一种 haar特征+adaboost训练器来识别自定义目标的方法:例子--- 识别鱼
训练:
1、准备样本---(正样本与负样本)
注意事项:正样本需要裁剪,统一规格。负样本比较好办不需要裁剪不需要统一规格。
至于样本的收集的多少一般是1000张左右,这样才能保证准确率 这里举例用到了61张。图片可以通过视频分解收集或者网络爬虫获取。
下面是我收集的部分正样本:大小为83*39.
负样本的图片就不展示了自己随意收集点和目标(鱼)不同的图片的行了
2、创建训练
样本收集好后就可以创建训练了,这里强调一下一个好的样本胜过一个好的神经网络。
建一个记事本或者txt文本都可以来描述正样本 (正样本必须要描述)可以通过dir /b >pos.dat直接获取生成描述文本
同样建一个负样本(负样本只需描述路径即可)
接下来需要把Opencv里面的2个自带的创建训练器的应用拉进目录下。
在同目录下创建一个create.bat格式的文本输入
opencv_createsamples.exe -info pos.dat -vec pos.vec -num 61 -w 83 -h 39
pause
然后双击运行会产生一个pos.vec文件
3、开始训练(参数的设置大家可以百度了解一下)
创建一个calssify.dat格式的文本输入
opencv_traincascade.exe -data data -vec pos.vec -bg neg.dat -numPos 61 -numNeg 68 -numStages 10 -w 83 -h 39 -minHitRate 0.9999 -maxFalseAlarmRate 0.5 -mode ALL
pause
等待训练结束
然后在data目录下会看到训练好的xml文档就可以拿去测试了(cascade.xml)
测试代码参考上一篇的人脸识别,只需把文档换一下即可,效果如下