Передача параметров индекса для 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.

Вы должны использовать внешнюю историю, используя абсолютный путь.

Другие вопросы по тегам