1. 程式人生 > >linux下,使用opencv訓練級聯分類器opencv_traincascade

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

 使用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 正樣本數目

 使用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