linux下,使用opencv訓練級聯分類器opencv_traincascade
參考:
http://jingyan.baidu.com/article/4dc40848f50689c8d946f197.html
http://blog.csdn.net/xidianzhimeng/article/details/10470839
http://www.tuicool.com/articles/BJj2Yj
路徑設定:dataset/pos dataset/neg
1 準備正負樣本:正負樣本最好剪裁成統一大小,此處採用30*30的圖片
--負樣本: 準備負樣本描述檔案 neg.txt ==>
1) 在neg路徑下: dir > neg.txt
2) 對neg.txt 進行編輯,刪除最後一行neg.txt; 可以使用vi neg.txt 開啟對其進行編輯
3) 如果負樣本有多個資料夾,可以把neg.txt放到neg外面與之同級,但需要在.txt裡面新增相對路徑:neg/neg1.jpg
--正樣本:
1) 在pos路徑下:dir > pos.txt
2) 同樣對pos.txt進行編輯,除了需要刪除最後一行pos.txt外,還需用在每個名稱後面新增:1 0 0 30 30; 1表示正樣本數目,後面四位表示x y width height
2 使用opencv_createsamples生成訓練樣本,建立 vec檔案
dataset路徑下,
opencv_createsamples -vec dataset/pos.vec -info dataset/pos/pos.txt -bg dataset/neg/neg.txt -w 30 -h 30 -nun 正樣本數目
3 使用opencv_traincascade 進行訓練
建立一個目錄 mkdir dt 用來放 .xml
opencv_traincascade -data dt -vec pos.vec -bg neg/neg.txt -numPos 1000 -numNeg 3000 -numStages 16 -precalcValbufSize 200 -precalcdxBufSize 1000 -featureType HOG -w 30 -h 30