Java 使用两个cacscade分类器进行人脸和眼睛检测

Java 使用两个cacscade分类器进行人脸和眼睛检测,java,android,Java,Android,很抱歉,我问的是初学者的问题,但我还没有找到答案。 我试图实时检测面部和眼睛。如果我只使用人脸检测或眼睛检测,那么代码(在android openCV上运行)可以很好地工作,但是当我将两者结合使用时,就像附加的代码一样,程序在运行时崩溃。我不知道如何组合这两个级联(一个在脸部周围显示矩形,另一个在眼睛周围)。任何帮助都将不胜感激 InputStream is3 = context.getResources().openRawResource(R.raw.lbpcascade_fronta

很抱歉,我问的是初学者的问题,但我还没有找到答案。 我试图实时检测面部和眼睛。如果我只使用人脸检测或眼睛检测,那么代码(在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();

以下是opencv主页上的相应教程:


你是不是错过了这一行

InputStream is3=context.getResources().openRawResource(R.raw.eyes\u detect)

您的原始文件夹中也应该有文件eyes_detect.xml

我使用haarcascade_eye_tree_eyegass.xml,只传递检测到的人脸的裁剪区域以获得眼睛位置