其他分享
首页 > 其他分享> > 将OpenCV项目从Desktop C移植到Android NDK

将OpenCV项目从Desktop C移植到Android NDK

作者:互联网

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

到目前为止,一切正常,它可以工作,我能够使用我复制的ORB版本,并最终将更改应用于算法.

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

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

解决方法:

该问题是由于Android ADT和/或Android NDK引起的.编辑器识别错误,实际上,控制台表明C代码已编译且没有错误.但是,Eclipse不允许运行其中包含错误的代码/应用程序.因此,解决此问题的最快方法是在以下位置修改项目的属性:

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

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

标签:opencv,android-ndk,android,porting
来源: https://codeday.me/bug/20191123/2065140.html