目前我使用的是 OpenCV3.4.1 版本 (正准备升级到OpenCV3.4.2)
最近要检测各种票据、证件,尝试一些经典的目标定位算法. hog-svm是其中一种.
(一)写了一个通用的hog-svm 检测对象的训练工具:
程序使用了 工作线程, 保证界面不会卡死。
只是计算get_svm_detector 的时候,需要注意 opencv3.4.1_src\sources\samples\cpp\train_HOG.cpp 这个demo的
get_svm_detector好像不太准确。
我参考了其他人代码,训练的检测器才是准确的。
(二)然后我的 通用hog-svm目标检测工具:
这张票是我上周去 襄阳(PS:襄阳比武汉干净、精致、好吃好玩) 拜访老朋友陈总买的火车票。
(三) Tips
关于训练的注意事项:
1> 窗口的比例尺大小非常重要,设置最合适的 winSize。
2> 样本的数量,最好都有 1k 以上
关于目标检测:
1> scale 参数对于性能非常重要,建议 根据场景来设置。
目前 detectMultiScale使用的方式是, orgSize, orgSize/scale, orgSize/scale^2, ...
最多 nlevels(默认64)
3> Hog特征对于 旋转较大的 目标(估计15度)检测不到.
可以试着 旋转 输入样本,进行第二次测试.
经过测试,目前 hog检测这种纹理丰富的、有一定布局的对象,还是比较可靠的。