gpt4 book ai didi

android - Java,OpenCV : How to read/write ORB FeatureDetection parameters

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

在 OpenCV 中,我在 Android 应用程序中使用 ORB FeatureDetection。它有参数,但不能直接在 Java 中设置。推荐的设置它们的方法是写出带有参数的 XML 或 YML 文件,然后将其读回。

但是,似乎没有办法确定我是否正确地编写了文件并且应用了参数。我想我可以使用 write() 方法来验证我的新设置是否已被采用。但这似乎不起作用。它确实编写了正确的 YML 或 XML 文件,但这些文件没有参数。

这是写入文件的代码:

_detector = FeatureDetector.create(FeatureDetector.ORB);

// write initial params.
String fileName = myDir.getPath() + "/orb_params.yml";
_detector.write(fileName);
fileName = myDir.getPath() + "/orb_params.xml";
_detector.write(fileName);

// try setting some params.
String tempFileName = writeToFile("tempFile", "%YAML:1.0\nscaleFactor: 1.1\nnLevels: 5\nfirstLevel: 0\nedgeThreshold: 31\npatchSize: 31\n");
_detector.read(tempFileName);

// write params again.
String fileName = myDir.getPath() + "/orb_params2.yml";
_detector.write(fileName);
fileName = myDir.getPath() + "/orb_params2.xml";
_detector.write(fileName);

xml 文件如下所示:

<?xml version="1.0"?>
<opencv_storage>
</opencv_storage>

yml 文件如下所示:

%YAML:1.0

write方法不是Java实现的吗?我看到它是在 Algorithm.cpp 中实现的,我假设 ORB 特征检测器只是使用该实现,我没有看到任何代码表明不是这样。

我不知道这个问题是否仅限于 ORB 特征检测,或者其他算法是否在尝试从 Java 编写参数时遇到这些问题。

附录:我看到写方法似乎是在 JNI 代码中实现的:https://github.com/Itseez/opencv/blob/ddf82d0b154873510802ef75c53e628cd7b2cb13/modules/features2d/misc/java/src/cpp/features2d_manual.hpp

最佳答案

在 answers.opencv.org 上得到了回复,我将其张贴在这里,以供将来遇到此问题的人使用:

根据 this answer读/写功能未在 C++ 中实现,因此在 Android 中也不起作用。

关于android - Java,OpenCV : How to read/write ORB FeatureDetection parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600752/

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