android NDK整合opencv开发——流程总结(window环境)

本文总结了在Windows环境下,使用Android NDK整合OpenCV的C++ API来开发的过程。步骤包括新建Android项目,编写C++代码,创建Android.mk和Application.mk文件,使用Cygwin或Eclipse进行编译。通过Eclipse转换项目为C++项目,配置NDK路径,解决编译错误,最终使项目能够成功运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用opencv有两种方式:

一种是使用opencv的java版本的API,但是这种方式不是通过本地调用实现的,全部都是java代码。

一种是使用opencv的c++版本的API,将本地c++代码编译成.so链接库,然后在安卓开发中进行调用,本地cpp代码使用NDK进行编译。

这里总结下面这种编译本地c++代码的实例流程:

1、新建android项目,项目名称命名为NDKdemo。

2、修改界面文件res->layout->activity_ndkdemo.xml

3、在文件夹src下的com.example.ndkdemo包中新建一个类,类名为NdkFun。


这个类用于包装使用了opencv c++代码的动态库的导出函数。

4、修改Ndkdemo.java的代码,主要编写界面,以及调用上面的类(即使用C++动态库)。

上面都是在android开发环境上的java代码。

5、在项目中新建一个jni文件,用于放置该项目的所有cpp代码。


在jni文件夹下建立一个与动态库相同名字的cpp文件。

主要编写功能实现,完成逻辑,C++代码。

6、然后再在jni下新建两个文件"Android.mk"文件和"Application.mk"文件,这两个文件事实上就是简单的Makefile文件。
使用NDK进行编译的时候,需要使用Android.mk和Application.mk两个文件。


以上编写C++代码,以及makefile文件。

7、编译本地C++代码

编译本地C++代码可以使用Cygwin进行编译,cd 到项目目录,然后运行ndk-build。
也可以使用windows控制台进行编译,同样cd到项目目录,运行ndk-build。
还可以使用Eclipse进行编译,建议配置使用Eclipse进行编译,这样当项目的本地cpp代码发生变化的时候就可以实现自动的cpp代码编译,不用每次都在命令行中手动的进行编译。

我们使用Eclipse进行编译:
7.1首先需要将该项目转换到C++项目,使得该项目具有C++代码属性,如下所述。
点击项目,右击,New -> Other -> C/C++ -> Convert to a C/C++ Project.

7.2配置Eclipse对cpp代码进行编译:

首先需要给当前项目添加一个编译环境变量,如下目录
open Eclipse menu Window -> Preferences -> C/C++ -> Build -> Environment,
点击Add... 添加一个NDKROOT,并且设置值为NDK的根目录。


然后设置编译的一些参数
Project Properties -> C/C++ Build, uncheck Use default build command, replace “Build command” text from "make" to
"${NDKROOT}/ndk-build.cmd" on Windows,
"${NDKROOT}/ndk-build" on Linux and MacOS.


然后修改Behaviour选项卡,设置编译配置(配置在保存代码的时候进行自动编译):


点击确定,然后确认NDK(ndk-build)编译能够正常进行编译:


这个时候,会在C++代码中,看到非常多的错误提示,遍地都是错误提示,这里不要慌,这里只是假的错误提示,编译cpp代码能够编译通过,但是运行程序是不行的,会提示你代码有错误,需要解决这些问题。

打开工程属性,Project Properties -> C/C++ General -> Paths and Symbols

为GNC C++编译器添加如下路径:这里添加的路径就是NDK 中的c/c++ 头文件的路径以及要让项目找到opencv的jni的目录,这样才能使用opencv的c/c++ 对应的头文件


终于可以运行程序了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值