gpt4 book ai didi

android - Android 版 OpenCV : failed to load cascade classifier error

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:20 24 4
gpt4 key购买 nike

这是我第一次使用 openCV 库。我想用它来检测眼睛。我使用了本教程中提供的 FdActivity 代码:

http://romanhosek.cz/android-eye-detection-updated-for-opencv-2-4-6/

本教程使用 OpenCV 2.4.6,但我在我的项目中下载了 3.1 版本。由于版本差异,我已将使用 putText、矩形和圆形的行更改为从 imgproc 而不是 Core 导入。这就是我所改变的。我已将 haarcascade_lefteye_2splits.xml 和 lbpcascade_frontalface.xml 添加到 res 文件夹下的 raw 文件夹中。

运行应用程序时,我在 logcat 中收到此错误:

failed to load cascade classifier 

如果 mJavaDetector 或 mJavaDetectorEye 为空,则仅从这些行生成:

 try {
// load cascade file from application resources
InputStream is = getResources().openRawResource(
R.raw.lbpcascade_frontalface);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
mCascadeFile = new File(cascadeDir,
"lbpcascade_frontalface.xml");
FileOutputStream os = new FileOutputStream(mCascadeFile);

byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
is.close();
os.close();

// --------------------------------- load left eye
// classificator -----------------------------------
InputStream iser = getResources().openRawResource(
R.raw.haarcascade_lefteye_2splits);
File cascadeDirER = getDir("cascadeER",
Context.MODE_PRIVATE);
File cascadeFileER = new File(cascadeDirER,
"haarcascade_eye_right.xml");
FileOutputStream oser = new FileOutputStream(cascadeFileER);

byte[] bufferER = new byte[4096];
int bytesReadER;
while ((bytesReadER = iser.read(bufferER)) != -1) {
oser.write(bufferER, 0, bytesReadER);
}
iser.close();
oser.close();

mJavaDetector = new CascadeClassifier(
mCascadeFile.getAbsolutePath());
if (mJavaDetector.empty()) {
Log.e(TAG, "Failed to load cascade classifier");
mJavaDetector = null;
} else
Log.i(TAG, "Loaded cascade classifier from "
+ mCascadeFile.getAbsolutePath());

mJavaDetectorEye = new CascadeClassifier(
cascadeFileER.getAbsolutePath());
if (mJavaDetectorEye.empty()) {
Log.e(TAG, "Failed to load cascade classifier");
mJavaDetectorEye = null;
} else
Log.i(TAG, "Loaded cascade classifier from "
+ mCascadeFile.getAbsolutePath());



cascadeDir.delete();

}

我猜“haarcascade_eye_right.xml”的路径不正确,或者 xml 文件不存在,这是导致错误的原因吗?

如果是,我如何获得 xml 文件,我应该将它存储在哪里?如果不是,是什么导致了问题?

注意:我使用的是 Android Studio。

我很感激这方面的任何帮助,我已经尝试了一段时间,但我无法解决。

最佳答案

我明白了。虽然我不知道为什么。...

mJavaDetector = new CascadeClassifier( mCascadeFile.getAbsolutePath() );
//must add this line
mJavaDetector.load( mCascadeFile.getAbsolutePath() );

...

它对我有用。

关于android - Android 版 OpenCV : failed to load cascade classifier error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34953704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com