簡體   English   中英

使用兩個cacscade分類器進行面部和眼睛檢測

[英]using two cacscade classifiers for face and eyes detection

對於初學者的問題我很抱歉,但我還沒有找到答案。 我正試圖實時檢測臉部和眼睛。 代碼(在android openCV上運行)如果我只使用面部檢測或僅使用眼睛檢測就可以正常工作,但是當我將兩者結合起來時,就像在附帶的代碼中一樣,程序在運行時崩潰。 我不確定如何組合這兩個級聯(一個在臉部周圍顯示一個矩形,另一個在眼睛周圍顯示)。 任何幫助將不勝感激!

    InputStream is3 = context.getResources().openRawResource(R.raw.lbpcascade_frontalface);
        File cascadeDir = context.getDir("cascade", Context.MODE_PRIVATE);
        File cascadeFile = new File(cascadeDir, "lbpcascade_frontalface.xml");
        File cascadeFileEye = new File(cascadeDir, "eyes_detect.xml");
        FileOutputStream os = new FileOutputStream(cascadeFile);

        byte[] buffer = new byte[4096];
        int bytesRead;

        while ((bytesRead = is3.read(buffer)) != -1) {
            os.write(buffer, 0, bytesRead);
            }

        is3.close();
        os.close();
        FileOutputStream os1 = new FileOutputStream(cascadeFileEye);


        byte[] bufferEye = new byte[4096];
        int bytesReadEye;

        while ((bytesReadEye = is3.read(bufferEye)) != -1) {
            os1.write(bufferEye, 0, bytesReadEye);
            }

        is4.close();
        os1.close();

        mCascade = new CascadeClassifier(cascadeFile.getAbsolutePath());
        mCascadeEye = new CascadeClassifier(cascadeFileEye.getAbsolutePath());
        if (mCascade.empty()) {
            //Log.e(TAG, "Failed to load cascade classifier");
            mCascade = null;
            }  

        if (mCascadeEye.empty()) {
            //Log.e(TAG, "Failed to load cascade classifier");
            mCascadeEye = null;
            }  

        cascadeFile.delete();
        cascadeDir.delete();

你不是錯過了這條線

InputStream is3 = context.getResources().openRawResource(R.raw.eyes_detect);

您還應該在Raw文件夾中有文件eyes_detect.xml。

我使用了haarcascade_eye_tree_eyeglasses.xml,並且僅傳遞了檢測到的面部的裁剪區域以獲取眼睛位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM