3

我的目的是测试对 OpenCV 算法的一些修改,特别是 ORB 特征检测器和描述符。所以我开始在我的桌面上使用 C++ 进行开发,并从 OpenCV 源中复制了一些 .cpp 文件,特别是 orb.ccp、fast.cpp、precomp.cpp、fast_score.cpp。第一个是算法的主文件,第二个是 ORB 使用的特征检测器,第三个和第四个是必需的,在 fast.cpp 中用“includes”调用。显然,我从 OpenCV .hpp(s) 复制了头文件和方法声明,创建了我的头文件。我在所有文件中更改了所涉及的两个类的名称(ORB 和 FAST -> myORB 和 myFAST),以便您可以区分对我的算法版本的调用与对 OpenCV 的调用,因为仍然需要使用 OpenCV所有 imgproc 函数、核心、Mat 类...

到目前为止一切顺利,它有效,我能够使用我复制的 ORB 版本并最终将更改应用于算法。

当我切换到 Android NDK 时出现问题。在使用 NDK 设置项目后,我所做的是创建一个 JNI 方法,在该方法中我实现将使用算法 ORB 的代码,然后导入我的文件 .cpp 和 .hpp 上面,设置 .mk 文件和其他相关东西来编译我的文件,并且显然将项目设置为使用 OpenCV4Android。

问题如下:我的算法有效,代码由 Eclipse ADT 编译/构建和启动,我可以调用 myORB 类。但是,当我在 ADT 的编辑器中打开我的文件版本时,例如 (my)orb.cpp,出现问题:代码有几十个错误,相对于不存在的 (opencv) 方法(“无法解决” ), (opencv) 使用无效参数调用的方法...所以在我打开文件后它显示错误,然后不可能再次在 ADT 中构建项目,但是如果我删除并将 .cpp 文件复制回该项目再次编译没有问题,直到我再次打开它......

4

1 回答 1

3

问题是由于 Android ADT 和/或 Android NDK 造成的。编辑器识别出错误的错误,实际上Console表示C代码编译没有错误。然而,Eclipse 不允许运行在他看来包含错误的代码/应用程序。所以解决这个问题的最快方法是修改项目的属性:

Project -> Properties -> C / C + + General -> Code Analysis

将编辑器中出现的“问题”的“严重性”更改为“警告”或其他类型。

于 2013-07-18T11:01:30.353 回答