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

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函数、core、Mat类等在修改的cpp文件中使用。
到目前为止一切都好,它可以工作,我能够使用我自己版本的ORB并最终对算法进行更改。
当我切换到Android NDK时问题就出现了。我做的是,在设置了一个带有NDK的项目之后,创建一个JNI方法,在其中实现将使用算法ORB的代码,然后导入我的.cpp和.hpp文件,设置.mk文件和其他相关的东西来编译我的文件,并显然设置项目来使用OpenCV4Android。
问题如下:我的算法可以工作,代码被Eclipse ADT编译/构建并启动,我能够调用myORB类。然而,当我在ADT的编辑器中打开文件版本,例如(my)orb.cpp时,问题就出现了:代码有数十个错误,涉及到(opencv)方法不存在("无法解决"),(opencv)方法使用无效参数调用...因此,当我打开文件后它会显示这些错误,然后再次在ADT中构建项目就不可能了,但如果我将.cpp文件删除并重新复制到项目中,它就可以再次编译,直到我再次打开它...
1个回答

3
问题是由于Android ADT和/或Android NDK引起的。编辑器识别出了错误,但实际上控制台显示C代码已经编译成功。然而,Eclipse不允许运行包含错误的代码/应用程序。因此,最快的解决方法是修改项目属性:
Project -> Properties -> C / C + + General -> Code Analysis

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


哇,谢谢!那对我有效。但这不是一个真正的解决方案......有没有针对这个问题的解决方案? - MolhamStein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接