opencv_annotation.exe、opencv_createsamples.exe、opencv_traincascade.exe

【使用方法】主要是在cmd中使用命令行操做。打開文件夾D:\opencv349\x64\vc12\bin,能夠看到這三個exe文件。按住鍵盤shift+鼠標右鍵,在此處打開Powershell窗口。具體命令見黃色背景html

【樣本】框選缺陷的尺寸比例與opencv_createsamples.exe(生成vec)的w、h比例一致(會自動縮放到指定的w、h)。負樣本尺寸≥w、h。git

【功能】github

以檢測缺陷爲例(目錄見下圖)。三個工具依次爲:標註缺陷——生成正樣本的vec文件——訓練樣本。shell

opencv_annotation.exe,用來標註缺陷,完成後獲得txt文件,內容以下。框選時框住缺陷便可。工具

opencv_createsamples.exe,生成vec文件。此工具能夠把框選的缺陷縮放到指定大小(默認24*24像素,注意負樣本尺寸≥此像素),即所謂的歸一化。測試

opencv_traincascade.exe,生成cascade.xml,保存了訓練獲得的模型參數,此文件用於測試。spa

【用法】.net

一、opencv_annotation.exe命令行

若圖片過大,不建議使用此工具來標註,不方便放大或縮小。通常用於小於屏幕尺寸的圖片3d

若是圖片統一是等大的純缺陷圖(如20*20像素),那麼能夠不用此工具,直接仿照上圖在txt中添加內容便可(參考小技巧),個數、座標統一 1 0 0 20 20。

超過屏幕尺寸的大圖標註,能夠用https://github.com/tzutalin/labelImg/releases,獲得xml文件中的座標須要本身計算寬高,仿照上圖格式保存到txt中。

-a,生成的txt的路徑及txt名。-i,缺陷圖片的路徑。若是圖片高度>指定的m值,則縮小r倍顯示。

cmd中輸入:opencv_annotation -a=D:\data\NgImages\info.txt -i=D:\data\NgImages\

以後會遍歷展現D:\data\NgImages\中的缺陷圖,鼠標左鍵框選缺陷後,按鍵盤c鍵確認此框,d鍵放棄此框,n鍵下一幅圖,esc鍵退出。

完成後座標結果會保存到info.txt中(注意txt與圖片在同一文件夾中)。

 二、opencv_createsamples.exe

刪除info.txt中D:\data\NgImages\,由於 -info D:\data\NgImages\info.txtD:\data\NgImages\會補全圖片路徑。

cmd中輸入:opencv_createsamples -info D:\data\NgImages\info.txt -vec D:\data\ng.vec

依據正樣本info.txt中座標索引到真正框選的缺陷圖,將其特徵編譯爲二進制文件ng.vec

經常使用參數說明:注意-info -vec這兩個參數設置後,-bg失效,因此此處不列出。

-info  上一步中獲得的info.txt的路徑;
-vec  生成vec文件的路徑、vec文件名;
-num 生成的正樣本的最大數目,默認1000。若正樣本圖片數>設定值,則只生成設定值個正樣本,不然生成實際個數個。
-w   正樣本縮放到的寬度,默認24像素
-h   正樣本縮放到的高度,默認24像素

三、opencv_traincascade.exe

此處會用到負樣本。在負樣本圖片所在目錄新建okInfo.txt,內容是全部負樣本圖片名(不帶路徑),如1.jpg等(若是提示錯誤,就把絕對路徑加上如D:\data\background\1.jpg)。

opencv_traincascade -data D:\data\ -vec D:\data\ng.vec -bg D:\data\OkImages\okInfo.txt -numStages 25 -numPos 30 -numNeg 200 -umStaes 25 -w 24 -h 24 -minHitRate 0.995 -maxFalseAlarmRate 0.5 -mode ALL

注意-w 24 -h 24與第2步驟的尺寸要一致,-numPos用於訓練每層的正樣本數opencv_createsamples.exe獲得的正樣本數,-numNeg無要求,參數含義再也不贅述

最終獲得訓練好的級聯分類器的最終參數文件cascade.xml此文件可用於測試

相關文章
相關標籤/搜索