分類器訓練 haar分類器的使用方法及注意事項

2021-06-16 08:03:27 字數 2146 閱讀 8885

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板上的攝像頭拍 給自己在專案中使用。於是找了個教室,拍了三百張 回去做分類器。開始以為做分類器會很麻煩...