OpenCV訓練分類器製作xml文

2021-08-03 04:40:04 字數 2380 閱讀 4571

opencv訓練分類器製作xml文件**)

yuyu

**:整個過程分為兩步:

1.  建立樣本

2.  訓練分類器

現在讓我一一講述。

1.  建立樣本

◆ 樣本分兩種: 正樣本與負樣本(也有人翻譯成:正例樣本和反例樣本),其中正樣本是指待檢目標樣本(例如人臉,汽車,鼻子等),負樣本指其它任意。

◆ 所有樣本都應該有同一尺寸,如20 * 20,並放在相應檔案目錄下,

◆ 集合檔案格式(collection file format)和描述檔案格式(description file format)

集合檔案格式(collection file format)就是如下形的描述檔案:

[filename]

[filename]

[filename]

… 描述檔案格式(description file format)就是如下形的描述檔案:

[filename] [# of objects] [[x y width height] [... 2nd object] ...]

[filename] [# of objects] [[x y width height] [... 2nd object] ...]

[filename] [# of objects] [[x y width height] [... 2nd object] ...]

….(x, y) 指左上角的座標,width和 height 分別是樣本的寬和高,這裡我的是20*20的,所以兩個值都是20

◆ 負樣本用集合檔案格式描述,正樣本用描述檔案格式描述!(這點網上很多文章都搞錯了!)

▼建立樣本步驟:

一. 把所有正樣本放在posdata的資料夾下,把所有負樣本放在negdata資料夾下

(這裡我以人臉樣本為例) 二.

分別為正樣本和負樣本建立描述檔案

a. 為正樣本建立描述檔案格式檔案info.txt,並且把這個檔案放在與樣本同一目錄下,例如我的目錄為c:/opencv2.1/bin/posdata

a) 在命令列下 輸入以下命令: dir /b > info.txt

b)  開啟info.txt, 按ctrl+h, 把所有的bmp 換成 bmp 1 0 0 20 20

c) 刪除info.txt最後一行的 「info.txt」

d)  結果如下:

b. 為負樣本建立集合檔案格式檔案bg.txt, 並且把這個檔案放在與樣本同一目錄下,例如我的目錄為i:/negdata

a) 在命令列下 輸入以下命令: dir /b > bg.txt

b) 刪除bg.txt最後一行的 「bg.txt」

c)  結果如下:

三. 建立樣本。

opencv 自帶有建立樣本的exe 檔案,在 …/opencv2.1/bin 目錄下, 這裡我建立10個sample:

命令是: opencv_createsamples.exe -info c:/opencv2.1/bin/posdata/info.txt -vec a.vec -num 10 -w 20 -h 20

如圖:結果如圖:

(關於 opencv_createsamples.exe 的引數用法,在參考英文資料**裡有詳細介紹;

需要說明的是,我這裡用的引數並沒有 –bg, 因為根據那份文件,有了 –vec 和 –info 之後,就表示:create training samples from some (從很多正樣本中建立sample, 沒有distortions)

經歷千辛萬苦,我們終於看到sample被建立成功了,接下來的工作就簡單多了

▼訓練分類器

還是在…/opencv2.1/bin目錄下,輸入命令:

opencv_haartraining.exe  -data data -vec c:/opencv2.1/bin/a.vec -bg i:/negdata/bg.txt -npos 250 -nneg 800 -nstages 4 -nsplits 2 -mem 512 -nonsym -w 20 -h 20 -minpos 100

回車(注意:

1.  引數-vec 一定要是剛剛建立樣本產生的a.vec,且把完整路徑也寫上去,我試過用相對路徑,但總會訓練失敗; bg.txt 也要用絕對路徑;

2.  –w 和 –h 都要寫上與樣本大小的一致的尺寸

3.  若遇到「記憶體什麼不能read」的問題,很有可能是bg.txt的格式有誤,回去

4.  關於 opencv_haartraining.exe 的引數用法,在參考英文資料**裡有詳細介紹

結果如下:

(可能實際結果與上圖有出入, 但看到最後的 ,就說明訓練成功了。

在bin目錄會生成乙份可愛的data.xml文件,這個就是我們想要的結果了!

whew….done!  give me a five! ^_^

OpenCV訓練分類器

opencv訓練分類器 一 簡介 目標檢測方法最初由paul viola viola01 提出,並由rainer lienhart lienhart02 對這一方法進行了改善。該方法的基本步驟為 首先,利用樣本 大約幾百幅樣本 的 harr 特徵進行分類器訓練,得到乙個級聯的boosted分類器。分...

訓練Opencv分類器

由於在做乙個專案的需要,接觸到opencv。並使用其中的機器識別,自己會的實在不多。在使用它自帶的人臉分類器時,用自己的arm板上的攝像頭拍的,基本上識別不出。於是自己想訓練乙個分類器 用自己arm板上的攝像頭拍 給自己在專案中使用。於是找了個教室,拍了三百張 回去做分類器。開始以為做分類器會很麻煩...

OpenCV訓練分類器

一 簡介 目標檢測方法最初由paul viola viola01 提出,並由rainer lienhart lienhart02 對這一方法進行了改善。該方法的基本步驟為 首先,利用樣本 大約幾百幅樣本 的 harr 特徵進行分類器訓練,得到乙個級聯的boosted分類器。分類器中的 級聯 是指最終...