私はopenCVライブラリを初めて使用しています。私はそれを使って目を検出したい。Android用OpenCV:カスケード分類子エラーの読み込みに失敗しました
http://romanhosek.cz/android-eye-detection-updated-for-opencv-2-4-6/
チュートリアルでは、OpenCVの2.4.6を使用していますが、私は私のプロジェクトでバージョン3.1をダウンロードしている:私はこのチュートリアルで利用可能なFdActivity
コードを使用しています。バージョンの違いにより、コアの代わりにimgprocからputText、rectangle、およびcircleを使用する行を変更しました。これはすべて私が変えたものです。 resフォルダの下の生のフォルダにhaarcascade_lefteye_2splits.xmlとlbpcascade_frontalface.xmlを追加しました。
私はlogcatでこのエラーを取得するアプリを実行している:
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();
}
私はへのパスを推測:mJavaDetectorまたはmJavaDetectorEyeが空の場合にのみ、これらの行から生成される
failed to load cascade classifier
"haarcascade_eye_right.xml"が正しくないか、XMLファイルが存在しない場合は、エラーの原因は何ですか?
はいの場合、xmlファイルはどのようにして保存できますか?いいえ、問題の原因は何ですか?
注:Androidスタジオを使用しています。
私はしばらく試してきましたが、私はそれを解決できませんでした。
これは間違いなくバグです。すでにパスがload()を呼び出すはずです。時間を節約してくれてありがとう! –
omg、私は十分な@ウィリアム劉さんに感謝することはできません... githubとすべての例と比較して、これに時間と時間を費やし、そして最後にそのopencvバグ....ありがとうウィリアム。 :-) – Santosh
愚かなopencv ... – user25