3
我試圖加載級聯分類中的Android應用程序,但下面的條件總是返回true,因此代碼不能執行成功:無法加載CascadeClassifier
cascadeClassifier.empty()
的代碼如下:
try
{
InputStream is = getResources().openRawResource(R.raw.cascade);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
mCascadeFile = new File(cascadeDir, "cascade.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 the cascade classifier
cascadeClassifier = new CascadeClassifier(mCascadeFile.getAbsolutePath());
if (cascadeClassifier.empty()) {
Log.e(TAG, "Failed to load cascade classifier");
cascadeClassifier = null;
}
}
catch (Exception e)
{
Log.e("OpenCVActivity", "Error loading cascade", e);
}
cascade.xml文件存儲在原始文件夾中,我已用python腳本成功測試過它 - 它成功檢測到對象。
如果this答案成立,那麼我不知道上面的代碼中可能會出現什麼問題,因爲訓練過的級聯已經過測試,輸入流似乎指向正確的位置(自動完成列表R.raw。級聯)。
如果有人幫助解決問題,我將非常感激。
你能輸出mCascadeFile.getAbsolutePath()來測試它是否是你期望它是什麼? – Micka