android studio使用jni读取.data文件
需求:读取.data文件到ncnn Mat中并使用 前提条件:已经在android studio里 配置好 opencv+ncnn
问 题:jni里c++函数ifstream没有办法读取
解决方法:使用AssetManager
步骤:
1.将需要读取的文件放到assets文件夹下
2.代码
//读取文件AAsset* asset = AAssetManager_open(mgr, "anchors_0.data", AASSET_MODE_BUFFER);if (!asset){__android_log_print(ANDROID_LOG_DEBUG, "anchors_0.data", "open anchors_0.data failed");return JNI_FALSE;}else{__android_log_print(ANDROID_LOG_DEBUG, "anchors_0.data", "open anchors_0.data success");}//将文件写入我提前设置好的ncnnmat中int ret = AAsset_read(asset, (char*)densepose.anchors[0].channel(0), anchors_size[0] * 4 * 4);AAsset_close(asset);if (ret != anchors_size[0] * 4 * 4){__android_log_print(ANDROID_LOG_DEBUG, "anchors_0", "read anchors_0 failed");return JNI_FALSE;}else{__android_log_print(ANDROID_LOG_DEBUG, "anchors_0", "read anchors_0 success");}