gpt4 book ai didi

android - 在android中使用opencv加载YAML模型文件时出错

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

我正在使用 opencv 在 android 中进行面部标志检测。我正在使用 JNI 与库进行交互。我已将“lbfmodel.yaml”文件保存在 Assets 中并尝试加载:

const char* jnamestr2 = jenv->GetStringUTFChars(jModelFileName, NULL);
cv::String stdFileName2(jnamestr2);
LOGD( "jModelFileName path : %s", jnamestr2);
FacemarkLBF::Params params;
params.model_filename = stdFileName2;
params.cascade_face = stdFileName;
Ptr<FacemarkLBF> facemark = FacemarkLBF::create(params);

但我收到错误:

Invalid address 0x9b2d2e08 passed to free: value not allocated
Fatal signal 6 (SIGABRT), code -6 in tid 27673

我已经记录了文件路径,它是:

jModelFileName path : /data/user/0/com.ds.openworld/app_model/lbfmodel.yaml

我不知道是什么问题,因为它在 native 部分崩溃了。模型文件也很大。这是个问题吗?

求助!

最佳答案

OpenCV 不能直接使用作为 Assets 存储的文件,您首先需要将其转换为“常规”文件。为此使用以下代码 fragment :

public String initAssetFile(String filename)  {
File file = new File(getFilesDir(), filename);
if (!file.exists()) try {
InputStream is = getAssets().open(filename);
OutputStream os = new FileOutputStream(file);
byte[] data = new byte[is.available()];
is.read(data); os.write(data); is.close(); os.close();
} catch (IOException e) { e.printStackTrace(); }
Log.d(TAG,"prepared local file: "+filename);
return file.getAbsolutePath();
}

原始来源:https://github.com/mmbuw/mis-2018-exercise-4-opencv/blob/master/app/src/main/java/com/example/mis/opencv/MainActivity.java#L129-L139

关于android - 在android中使用opencv加载YAML模型文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53557853/

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