我的目的是测试对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类。然而,当我打开我的文件版本时,对于istance(my)orb.cpp,在ADT的编辑器中出现问题:代码有几十个错误,相对于(opencv)方法不存在(“无法解决”) ),(opencv)方法使用无效参数调用...所以在我打开文件后它显示错误,然后再次在ADT中构建项目是不可能的,但是如果我删除并将.cpp文件复制回来该项目在没有问题的情况下再次编译,直到我再次打开它...
答案 0 :(得分:3)
问题是由Android ADT和/或Android NDK引起的。编辑器识别错误的错误,实际上,控制台指示编译的C代码没有错误。但是,Eclipse不允许运行代码/应用程序,据他说,这些代码/应用程序包含错误。因此,解决这个问题的最快方法是在:
中修改项目的属性Project -> Properties -> C / C + + General -> Code Analysis
将编辑器中出现的“问题”的“严重性”更改为“警告”或其他类型。