摸索了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分類器。分類器中的 級聯 是指最終...