OpenCV LBP和HAAR人臉聯(lián)級(jí)檢測(cè)

人臉和眼瞼的實(shí)時(shí)檢測(cè)

1、LBP和HAAR特征級(jí)聯(lián)檢測(cè)器,實(shí)現(xiàn)人臉和眼睛的檢測(cè),首先介紹基于圖片的人臉檢測(cè),再引入JavaCameraVeiw,, 對(duì)Android端的相機(jī)調(diào)用和數(shù)據(jù)讀取,使用攝像頭數(shù)據(jù)流,進(jìn)行人臉和眼睛的實(shí)時(shí)檢測(cè)與跟蹤,

級(jí)聯(lián)分類器介紹

opencv中的人臉檢測(cè)是基于訓(xùn)練好的 LBP和 HAAR的特征級(jí)聯(lián)分類檢測(cè)器完成的

LBP特征: Local Binary Pattern 局部二值模式, LBP的應(yīng)用中, 如紋理分類、人臉分析等, 一般采用 LBP特征譜的統(tǒng)計(jì)直方圖作為特征向量用于分類識(shí)別.

HAAR特征: 一種反映圖像灰度變化的, 像素分模塊求差值的一種特征.

單個(gè) LBP或者 HAAR 特征都可以檢測(cè)分類邊緣、直線、角點(diǎn)等特征, 但是容易受到外界噪聲、像素混疊等各種干擾, 導(dǎo)致誤判, 所以他們單個(gè)都是弱分類器, 只有通過這些聯(lián)級(jí)分類器的特征點(diǎn)才會(huì)被保存, 否則會(huì)被拋棄, 然后再進(jìn)一步使用更多的強(qiáng)分類器聯(lián)級(jí)對(duì)特征區(qū)域記性候選檢測(cè), 知道滿足條件, 輸出檢測(cè)得到的最終結(jié)果.

人臉進(jìn)測(cè)

OpenCV自帶訓(xùn)練好的人臉檢測(cè)模型
HAAR和 LBP目錄位置
/OpenCV-android-sdk/sdk/etc/

加載預(yù)訓(xùn)練特征 xml 數(shù)據(jù), 在資源目錄下創(chuàng)建一個(gè)文件夾raw, 把/sdk/etc/下面的 lbpcascade_frontalface_improved.xml 復(fù)制到 raw文件中.

初始化聯(lián)級(jí)分類器的方法:

//cascadeClassifier 聯(lián)級(jí)分類器;
private void initClassifier(){
        try{
             InputStream si = getResources().openRawResource(R.raw.lbpcascade_frontalface_improved);  
             File cascadDir = getDir("cascade",Context.MODE_PRIVATE);
             File cadcadFile = new File(cascadDir,"lbpcascade_frontalface_improved.xml");
             FileOutputStream os = new FileOutputStream(cascadeFile);
             byte[] buffer = new byte[4096];
             int read;
             while((read = is.read(buffer)) != -1){
                  os.write(buffer);
             }
             is.close();
             os.close();
             CascadeClassifier  cascadeClassifier = new CascadeClassifier(cascadeFile.getAbsolutePath());
             cascadeFile.delete();
             cascadeDir.delete();
        }catch(Exception e){
            e.printStackTrace();    
        }
}
detectMultiScale方法的調(diào)用

初始化加載后, 就可以調(diào)用它的 detectMultiScale方法設(shè)置好相關(guān)參數(shù)以實(shí)現(xiàn)人臉檢測(cè)

/**
 * img 輸入圖像
 * objects  表示檢測(cè)到的對(duì)象個(gè)數(shù), 返回每個(gè)對(duì)象的矩形坐標(biāo)
 * scaleFactor  尺度變換的比率 基本在 1.05 ~ 1.2 之間比較好
 * minNeighbors  領(lǐng)域范圍內(nèi)符合條件的對(duì)象個(gè)數(shù), 它是輸出檢測(cè)最終 BOX的重要閾值, 太大則條件苛刻丟失檢測(cè)對(duì)象, 太小容易檢測(cè)錯(cuò)誤;
 * flags  OpenCV 2.x 使用
 * minSize  對(duì)象檢測(cè)的最小范圍
 * maxSize 對(duì)象檢測(cè)的最大范圍
 **/
detectMultiScale(Mat img, MatOfPoint objects, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容