訓練分類器總結篇(1)

2021-08-27 16:10:12 字數 2426 閱讀 1717

摸索了3天多的訓練分類器,身心俱備。不過還好弄懂了一些訓練的方法。之前在win7訓練沒成功過一次,怒裝win10系統,放win10上面訓練。opencv版本使用的是2.4.9.

1、找到正樣本和負樣本,使用「美圖看看」軟體來修改格式和尺寸。我這裡正樣本565張,負樣本687張。正樣本為有柱子的,負樣本為沒有柱子的。

2、建立資料夾,我這裡pos和neg是手機**的原圖,pos2和neg2是使用美圖看看軟體修改之後的。pos資料夾中的格式為.bmp,大小為20*20。neg資料夾中的格式為.bmp。把opencv_createsamples.exe和opencv_traincascade放到同一資料夾下面。

之後開始準備正樣本,在pos2資料夾建立bat檔案,指令為:

dir /b > pos.dat
修改的路徑,如下圖

然後獲取訓練的vec檔案,指令為:

opencv_createsamples.exe -info pos2\pos.dat -vec pos\pos.vec -num 565 -w 20 -h 20
負樣本準備直接拿原圖就行了,最好也是.bmp格式,在neg2資料夾下面輸入指令:

dir /b > neg.dat
3、開始訓練,注意data檔案自己建立,下面的是開始訓練的截圖:指令:

4、如果出現錯誤,不必害怕,繼續連線前面的訓練資料繼續訓練就行。只要出現了stage的檔案,說明已經在訓練了,繼續訓練下去。

5、訓練成功截圖,總算得到了我所需要的「cascade.xml」檔案。

6、測試效果(含測試**),手機照的相片尺寸有點大,自己用軟體改小一點。

#include "opencv2\opencv.hpp"  

#include using namespace std;

using namespace cv;

int main()

vecto***ces; //建立乙個容器儲存檢測出來的臉  

mat gray;

cvtcolor(img, gray, cv_bgr2gray);//灰度圖轉化,提取haar特徵  

equalizehist(gray, gray);  //直方圖均衡  

//resize(gray, gray, size(128, 128), 0, 0, cv_inter_linear);  

ccf.detectmultiscale(gray, faces, 1.1, 3, 0, size(80, 225), gray.size()); //檢測臉,此處的size(x,y)引數x,y檢測前需調整到合適數值  

參考:

OpenCV訓練分類器

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

訓練Opencv分類器

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

OpenCV訓練分類器

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