基於級聯分類器的目標檢測objdect

2021-08-03 05:30:51 字數 1416 閱讀 2273

opencv支援的目標檢測的方法是利用樣本的haar特徵進行的分類器訓練,得到的級聯boosted分類器(cascade classification)。注意,新版本的c++介面除了haar特徵以外也可以使用lbp特徵。

先介紹一下相關的結構,級聯分類器的計算特徵值的基礎類featureevaluator,功能包括讀操作read、複製clone、獲得特徵型別getfeaturetype,分配分配視窗的操作setimage、setwindow,計算有序特徵calcord,計算絕對特徵calccat,建立分類器特徵的結構create函式。級聯分類器類cascadeclassifier。目標級聯矩形的分組函式grouprectangles。

這裡再補充一點:後來我又進行了一些實驗,對正面人臉分類器進行了實驗,總共有4個,

alt、alt2、alt_tree、default

。對比下來發現alt和alt2的效果比較好,alt_tree耗時較長,default是乙個輕量級的,經常出現誤檢測。所以還是推薦大家使用haarcascade_frontalface_atl.xml和haarcascade_frontalface_atl2.xml。

呼叫cascadeclassifier類成員函式load實現,**為:

[cpp]view plain

copy

cascadeclassifier face_cascade;  

face_cascade.load("haarcascade_frontalface_alt.xml"

);  

這裡先將影象變成灰度圖,對它應用直方圖均衡化,做一些預處理的工作。接下來檢測人臉,呼叫detectmultiscale函式,該函式在輸入影象的不同尺度中檢測物體,引數image為輸入的灰度影象,objects為得到被檢測物體的矩形框向量組,scalefactor為每乙個影象尺度中的尺度引數,預設值為1.1,minneighbors引數為每乙個級聯矩形應該保留的鄰近個數(沒能理解這個引數,-_-|||),預設為3,flags對於新的分類器沒有用(但目前的haar分類器都是舊版的,cv_haar_do_canny_pruning利用canny邊緣檢測器來排除一些邊緣很少或者很多的影象區域,cv_haar_scale_image就是按比例正常檢測,cv_haar_find_biggest_object只檢測最大的物體,cv_haar_do_rough_search只做初略檢測),預設為0.minsize和maxsize用來限制得到的目標區域的範圍。這裡呼叫的**如下:

[cpp]view plain

copy

face_cascade.detectmultiscale( frame_gray, faces, 1.1, 2, 0|cv_haar_scale_image, size(30, 30) );  

這個也比較簡單,呼叫ellips函式將剛才得到的faces矩形框都顯示出來

機器學習 基於級聯分類器的多目標檢測

2019獨角獸企業重金招聘python工程師標準 當然了,作為有理想有抱負的碼農,用現成的分類器是不會滿足的。現實使用中我們經常需要訓練針對各種應用的分類器。下面介紹如何訓練乙個自己的級聯分類器。整個過程大致可分為以下幾步 基於opencv 2.4.4 1.收集資料 資料可分為正樣本和負樣本。正樣本...

基於OpenCV級聯分類器的人臉檢測

使用級聯分類器訓練人臉模型 作為乙個大四狗,在畢業之前想做點有意思的東西,加上人工智慧這兩年很火,也就從網上找資源,進行了乙個學習的過程,使用的平台是qt5.12 opencv3.40。目的就是為了訓練乙個可以進行人臉檢測的模型。跟著賈志剛老師的課程學了一段時間以後,自己也就找專案去練手去了。不過在...

人臉檢測級聯分類器

對於人臉識別這種型別的應用來說,通常都會分為幾個步驟 人臉檢測 face detection 檢測到人臉所在的區域。並進行一系列的矯正。人臉校準 face alignment 人臉校準指的是在中尋找到鼻子 眼睛 嘴巴之類的位置。如圖中,紅色的框是在進行檢測,白色的點是在進行校準。資訊識別 info ...