这是我第一次使用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。
我很欣赏这方面的任何帮助,我已经尝试了一段时间,但我无法解决它。
答案 0 :(得分:17)
我明白了。虽然我不知道为什么。 ...
{{1}}
...
它对我有用。