Передача параметров индекса для Flann Matcher с использованием OpenCV на Android
Я пытаюсь настроить сопоставление Flann в opencv, редактируя параметры индекса, но я использую Java для Android, и я не знаю, как именно это работает.
Я нашел этот ответ, но я не знаю, как правильно его применить, вот код, который я пробовал
String yamlParam="%YAML:1.0\n"
+ "indexParams:\n"
+ " -\n"
+ " name: algorithm\n"
+ " type: 23\n"
+ " value: 1\n"
+ " -\n"
+ " name: trees\n"
+ " type: 4\n"
+ " value: 4\n";
File outputF = File.createTempFile("FlannfDetectorParams", ".YAML", outputDir);
writeToFile(outputF,yamlParam);
descriptorMatcher.read(outputF.getPath());
и вот ошибка, которую я получаю
Ошибка OpenCV: сбой утверждения (sp.type() == FileNode::SEQ) в виртуальном void cv::FlannBasedMatcher::read(const cv::FileNode &)
2 ответа
Решение
Вы должны использовать полный формат файла конфигурации yml:
%YAML:1.0
---
format: 3
indexParams:
-
name: algorithm
type: 23
value: 1
-
name: trees
type: 4
value: 4
searchParams:
-
name: checks
type: 4
value: 32
-
name: eps
type: 5
value: 0.
-
name: sorted
type: 15
value: 1
У меня тот же вопрос в Android SDK 28 и OpenCV 4.5.2.
Вы должны использовать внешнюю историю, используя абсолютный путь.