harr分類器是乙個很有用的工具,它主要是用來實現對剛性物體的檢測的分類器的訓練。
harr
分類器使用了
harr
特徵或更準確的描述是類
harr
的小波特徵,該特徵由矩形影象區域的加減組成。
opencv的
harr
分類器位於
...\opencv\bin
中,bin
中的檔案就是我們訓練自己的分類器是要用到的東西。
分類器的訓練主要分為四步:
1、樣本的建立
2、分類器的訓練
3、xml檔案生成
4、對訓練好的分類器的效果的檢測
乙個好的分類器能夠很靈敏的對目標物體進行識別和跟蹤,但它的訓練需要數量龐大的正樣本與負樣本。在這裡我只選取少量的樣本來進行試驗演示。
樣本的建立分為正樣本的建立與負樣本的建立。
(1)正樣本的建立
a、樣本的製作
對於正樣本,通常的做法是先把所有正樣本裁切好,並對尺寸做規整(即縮放至指定大小),如圖所示:
b、樣本描述檔案的生成
方法有兩種:
1、採用dos命令列的方式生成。具體方法如下:
採用dos命令生成樣本描述檔案。具體方法是在dos下的進入你的目錄,比如我的放在d:\face\posdata下,則:按ctrl+r開啟windows執行程式,輸入cmd開啟dos命令視窗,輸入 d:回車,再輸入cd d:\face\negdata進入路徑,再次輸入dir /b > negdata.dat,則會路徑下生成乙個negdata.dat檔案,開啟該檔案將最後一行的negdata.dat刪除,這樣就生成了負樣本描 述檔案。dos命令視窗結果如下圖:
完成後正樣本資料夾內會生成乙個txt的檔案,開啟檔案,刪除面posdata.txt這一項,儲存即可。
dir /b >posdata.txt
pause
儲存即可。
執行create.bat檔案即可生成posdata.txt檔案,同樣刪除其中多餘部分。
2、將生成的txt檔案改為:
(2)負樣本的建立
利用正樣本檔案輸出乙個格式的訓練檔案pos.vec
方法同樣有兩種,此處只講一種:
在bin
目錄下建立乙個批處理檔案
createsamples.bat,
並在裡面寫入:
createsamples.exe -info posdata\posdata.txt -vec data\pos.vec -num 10 -w 18 -h 18
pause
儲存後執行,結果如下:
在此處同樣只講一種方法:
方法同上,建立haartraining.bat
檔案,並輸入:
haartraining.exe -data data\cascade -vec data\pos.vec -bg negadata\negadata.txt -npos 10 -nneg 10 -mem 200 -w 18 -h 18
pause
執行程式,結果如下:
結果可能跟這個不完全相同,但也足夠了!!!
完此步需要另外幾個檔案,如下圖:
其中convert.bat
是批處理檔案,**如下:
haarconv.exe cascade output.xml 18 18
執行即可生成xml
檔案,即為目標檔案。
這一步需要用到facedetect.exe等一下檔案:
start檔案中指令如下:
facedetect.exe --cascade="output.xml" 0
執行該檔案即可生成乙個xml檔案!!
三、題外話
使用OpenCV中的haar級聯分類器實現人臉識別
實現 匯入模組 import cv2 載入一張待檢測的人臉 人臉歪著可能檢測不到 xml載入有兩種方法 載入人臉檢測的xml 第一種方法 face cascade cv2.cascadeclassifier 先例項化乙個物件 這裡是你的xml存放路徑!這個是載入人臉識別的引擎 face cascad...
OpenCV訓練分類器
opencv訓練分類器 一 簡介 目標檢測方法最初由paul viola viola01 提出,並由rainer lienhart lienhart02 對這一方法進行了改善。該方法的基本步驟為 首先,利用樣本 大約幾百幅樣本 的 harr 特徵進行分類器訓練,得到乙個級聯的boosted分類器。分...
訓練Opencv分類器
由於在做乙個專案的需要,接觸到opencv。並使用其中的機器識別,自己會的實在不多。在使用它自帶的人臉分類器時,用自己的arm板上的攝像頭拍的,基本上識別不出。於是自己想訓練乙個分類器 用自己arm板上的攝像頭拍 給自己在專案中使用。於是找了個教室,拍了三百張 回去做分類器。開始以為做分類器會很麻煩...