繁体   English   中英

将 OpenCV 项目从桌面 C++ 移植到 Android NDK

[英]Porting OpenCV project from Desktop C++ to Android NDK

我的目的是测试对 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 类...在修改的 cpp 文件中使用。

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

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

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

问题是由于 Android ADT 和/或 Android NDK。 编辑器识别出错误的错误,实际上是Console表明C代码编译没有错误。 但是,Eclipse 不允许运行根据他的说法包含错误的代码/应用程序。 因此,解决此问题的最快方法是在以下位置修改项目的属性:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM