gpt4 book ai didi

android - 是否可以从资源中加载 CascadeClassifier .xml 文件

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:49 25 4
gpt4 key购买 nike

您可能知道 CascadeClassifier::load 函数需要 .xml 文件的路径。所以像这样的代码是合理的(在 Android 上):

CascadeClassifier face_cascade;
face_cascade.load( "/sdcard/haarcascade_frontalface_alt2.xml");

但我想从资源中加载它们(从 native 部分)。可能吗?在 native 部分加载 xml 文件的最佳方法是什么? .xml 文件的最佳位置在哪里?

最佳答案

我是 Android 的新手,但我认为正确的答案是严格意义上你真的不能。尽管如此,以下内容可能不如您(和我)所期望的那么好,我从 Pietmau 找到了以下解决方法 here .基本上,如您所愿,将您的 xml 放在 resource/raw 目录中,然后在您的代码中读取它,将其保存到外部文件,并通过传递该文件的路径将其加载到分类器中。是的,我知道...

方法是:

public void load_cascade(){
try {
InputStream is = getResources().openRawResource(R.raw.lbpcascade_frontalface);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
File 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();

face_cascade = new CascadeClassifier(mCascadeFile.getAbsolutePath());
if(face_cascade.empty())
{
Log.v("MyActivity","--(!)Error loading A\n");
return;
}
else
{
Log.v("MyActivity",
"Loaded cascade classifier from " + mCascadeFile.getAbsolutePath());
}
} catch (IOException e) {
e.printStackTrace();
Log.v("MyActivity", "Failed to load cascade. Exception thrown: " + e);
}
}

你只需在 BaseLoaderCallback 中加载 OpenCV 库后调用它:

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
mOpenCvCameraView.setOnTouchListener(Tutorial3Activity.this);
load_cascade();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};

好吧...

关于android - 是否可以从资源中加载 CascadeClassifier .xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189214/

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