我正在android studio中创建一个使用库opencv和yolo的应用程序。我想在android包中存储yolo配置文件和权重。现在我在手机的外部存储中有这些文件,我可以这样访问它们:
String yoloCfg = Environment.getExternalStorageDirectory() + "/dnns/traffic-yolov3-tiny.cfg" ;
String yoloWeights = Environment.getExternalStorageDirectory() + "/dnns/traffic-yolov3-tiny_15000.weights";
yolo = Dnn.readNetFromDarknet(yoloCfg, yoloWeights);
我的问题是:当用户下载apk时,我应该把yolo配置文件和权重放在哪里,以及如何获得它们的路径,因为readNetFromDarknet需要这些文件的路径作为args。
我试着把它们放在资产中,并试图找到通往资产的道路,但这并不奏效。这是我尝试过的代码:
String yoloCfg = "file:///android_asset/traffic-yolov3-tiny.cfg";
String yoloWeights = "file:///android_asset/traffic-yolov3-tiny_15000.weights";
yolo = Dnn.readNetFromDarknet(yoloCfg, yoloWeights);
这是我保存文件的地方:文件的位置
这就是我得到的错误:
E/cv::error(): OpenCV(4.0.1) Error: Parsing error (Failed to parse NetParameter file: file:///android_asset/traffic-yolov3-tiny.cfg) in readNetFromDarknet, file /build/master_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp, line 207
E/org.opencv.dnn: dnn::readNetFromDarknet_10() caught cv::Exception: OpenCV(4.0.1) /build/master_pack-android/opencv/modules/dnn/src/darknet/darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: file:///android_asset/traffic-yolov3-tiny.cfg in function 'readNetFromDarknet'
E/SurfaceView: Exception configuring surface
我遇到了完全相同的问题。我所做的是将文件添加到资产文件夹中;然后我创建了两个文件,并在那里复制了资产文件夹文件的内容。
确保使用以下路径并在那里创建文件:
applicationContext.filesDir.absolutePath