Android+Opencv+Eclipse+NDK环境搭建
2014-02-28 22:36
429 查看
《不懂之处可参考http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html》
一、首先下载所用的资源
Opencv-android-sdk:地址可以去官网上下载,http://sourceforge.net/projects/opencvlibrary/files/opencv-android/
只不过有点慢,这里有一个下载地址,是一个网盘
http://pan.baidu.com/wap/link?uk=1057195248&shareid=4038639114&third=0ss
Android-NDK:
可以去官网下载,https://developer.android.com/tools/sdk/ndk/index.html
或者去http://dl.dbank.com/c0v9ubaffo
二、配置Eclipse
将下载好的压缩包解压缩到没有中文没有空格的路径上去。
打开eclipse->window->Preferences->Android->NDK:右侧出现NDK location:浏览至你的NDK解压缩的路径并点击应用(Apply)。
![](http://img.blog.csdn.net/20140228204605593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
同时将NDK所在的路径添加至系统path中,方便以后命令行操作。
三、工程开发时的配置:
在android中使用opencv有两种方式,一种是使用JAVA API,一种是使用混合编程,java语言调用C++语言编译的库文件,使用JNI 编程。
四、使用Java API:
首先在开发时导入opencv的库,在文件中-》导入-》Android->existing android code to workspace.-》浏览你的opencv sdk 所在的目录,进入sdk/java/,导入opencv的库。
![](http://img.blog.csdn.net/20140228205741406?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
接着在你的工程上点击右键->属性-》android:下面有个 add ,点击加载opencv的库,最后应用。
![](http://img.blog.csdn.net/20140228210445390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
此时使用Android 的JAVA API,已经可以开发了,一般包的形式为
org.opencv.OpenCV模块名).(OpenCV类名)
此时使用opencv 库要注意,opencv库的连接形式有两种:一种是异步连接,一种是静态连接
1:异步连接:
代码中应注意在活动中要添加一个BaseLoaderCallback 的成员并实例化,同时实现重载onResume,如下图所示
2:静态连接:
将所需要的库从
<OpenCV-2.4.8-androidsdk>/sdk/native/libs/<target_arch>中直接复制到自己工程的libs/<target_arch>下面。
若含有JNI成分,看下文如何生成并修改android.mk。最后在活动类中加入以下代码:
若需要加载其他库则:
剩下的就是自己写代码了
注:apk 生成之后安装到手机之后若不能运行,手机还需下载opencv manager.apk。
五、使用JNI:
前期仍像使用java api 一样将opencv导入并加载。接下来是不同之处:
首先添加本地支持:在工程上右键点击android tools -》ddnative support
![](http://img.blog.csdn.net/20140228212835656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这时出现了添加的库的名称的对话框,写个名字即可:
![](http://img.blog.csdn.net/20140228213113156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
点击finish。之后刷新工程,你会发现工程下面出现了新的东西。
![](http://img.blog.csdn.net/20140228213313046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在项目中多了一个“jni”文件夹,该文件夹这时候多出了两个文件,如本程序中多了“ImgProcess.cpp”和“Android.mk”
修改android.mk:如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#try to load OpenCV.mk from default install location
#注意下面的根据自己的情况修改
include E:\java\OpenCV-2.4.5-android-sdk\sdk\native\jni\OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif
LOCAL_MODULE := ImgFun
LOCAL_SRC_FILES := ImgFun.cpp
include $(BUILD_SHARED_LIBRARY)
同时在JNI文件夹下添加Application.mk
内容如下:
APP_STL:=gnustl_static
APP_CPPFLAGS:=-frtti -fexceptions
APP_ABI:=armeabi armeabi-v7a
接下来是一些eclipse的配置:
首先在工程属性中,在“C/C++ Build”下的“Tool Chain Editor”中选择android GCC
![](http://img.blog.csdn.net/20140228220925109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
C/C++ Build的Builder Settings"中配置"Build command:"直接输入ndk-build
![](http://img.blog.csdn.net/20140228222513984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在“Behaviour”中设置
![](http://img.blog.csdn.net/20140228222704796?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
此时还需要配置javah外部工具方法如下:
![](http://img.blog.csdn.net/20140228221600515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后一行字为:-v -classpath "${project_loc}/bin/classes" -d "${project_loc}/jni" ${java_type_name}
![](http://img.blog.csdn.net/20140303111622890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
下一步:
打开工程性属,Project Properties -> C/C++ General -> Paths and Symbols
![](http://img.blog.csdn.net/20140228223458093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHFoNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
添加include directorires 时注意选择
add to all configurations
add to all languages
最后注意api版本不要低于14
至此环境已经配好了,至于如何使用则请关注下一篇博文
一、首先下载所用的资源
Opencv-android-sdk:地址可以去官网上下载,http://sourceforge.net/projects/opencvlibrary/files/opencv-android/
只不过有点慢,这里有一个下载地址,是一个网盘
http://pan.baidu.com/wap/link?uk=1057195248&shareid=4038639114&third=0ss
Android-NDK:
可以去官网下载,https://developer.android.com/tools/sdk/ndk/index.html
或者去http://dl.dbank.com/c0v9ubaffo
二、配置Eclipse
将下载好的压缩包解压缩到没有中文没有空格的路径上去。
打开eclipse->window->Preferences->Android->NDK:右侧出现NDK location:浏览至你的NDK解压缩的路径并点击应用(Apply)。
同时将NDK所在的路径添加至系统path中,方便以后命令行操作。
三、工程开发时的配置:
在android中使用opencv有两种方式,一种是使用JAVA API,一种是使用混合编程,java语言调用C++语言编译的库文件,使用JNI 编程。
四、使用Java API:
首先在开发时导入opencv的库,在文件中-》导入-》Android->existing android code to workspace.-》浏览你的opencv sdk 所在的目录,进入sdk/java/,导入opencv的库。
接着在你的工程上点击右键->属性-》android:下面有个 add ,点击加载opencv的库,最后应用。
此时使用Android 的JAVA API,已经可以开发了,一般包的形式为
org.opencv.OpenCV模块名).(OpenCV类名)
此时使用opencv 库要注意,opencv库的连接形式有两种:一种是异步连接,一种是静态连接
1:异步连接:
代码中应注意在活动中要添加一个BaseLoaderCallback 的成员并实例化,同时实现重载onResume,如下图所示
public class Sample1Java extends Activity implements CvCameraViewListener { private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); } break; default: { super.onManagerConnected(status); } break; } } }; @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback); } ... }
2:静态连接:
将所需要的库从
<OpenCV-2.4.8-androidsdk>/sdk/native/libs/<target_arch>中直接复制到自己工程的libs/<target_arch>下面。
若含有JNI成分,看下文如何生成并修改android.mk。最后在活动类中加入以下代码:
static { if (!OpenCVLoader.initDebug()) { // Handle initialization error } }
若需要加载其他库则:
static { if (!OpenCVLoader.initDebug()) { // Handle initialization error } else { System.loadLibrary("my_jni_lib1"); System.loadLibrary("my_jni_lib2"); } }
剩下的就是自己写代码了
注:apk 生成之后安装到手机之后若不能运行,手机还需下载opencv manager.apk。
五、使用JNI:
前期仍像使用java api 一样将opencv导入并加载。接下来是不同之处:
首先添加本地支持:在工程上右键点击android tools -》ddnative support
这时出现了添加的库的名称的对话框,写个名字即可:
点击finish。之后刷新工程,你会发现工程下面出现了新的东西。
在项目中多了一个“jni”文件夹,该文件夹这时候多出了两个文件,如本程序中多了“ImgProcess.cpp”和“Android.mk”
修改android.mk:如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#try to load OpenCV.mk from default install location
#注意下面的根据自己的情况修改
include E:\java\OpenCV-2.4.5-android-sdk\sdk\native\jni\OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif
LOCAL_MODULE := ImgFun
LOCAL_SRC_FILES := ImgFun.cpp
include $(BUILD_SHARED_LIBRARY)
同时在JNI文件夹下添加Application.mk
内容如下:
APP_STL:=gnustl_static
APP_CPPFLAGS:=-frtti -fexceptions
APP_ABI:=armeabi armeabi-v7a
接下来是一些eclipse的配置:
首先在工程属性中,在“C/C++ Build”下的“Tool Chain Editor”中选择android GCC
C/C++ Build的Builder Settings"中配置"Build command:"直接输入ndk-build
在“Behaviour”中设置
此时还需要配置javah外部工具方法如下:
最后一行字为:-v -classpath "${project_loc}/bin/classes" -d "${project_loc}/jni" ${java_type_name}
下一步:
打开工程性属,Project Properties -> C/C++ General -> Paths and Symbols
添加include directorires 时注意选择
add to all configurations
add to all languages
最后注意api版本不要低于14
至此环境已经配好了,至于如何使用则请关注下一篇博文
相关文章推荐
- cocos2d-x学习环境搭建(1)-------android+eclipse+ndk
- Opencv4Android分享:eclipse下opencv环境搭建
- Android SDK+Eclipse+ADT+CDT+NDK开发环境在win7下的搭建
- Android之eclipse 新版NDK环境搭建(免Cygwin,超级快)-可用
- windows下eclipse搭建android_ndk开发环境
- windows下eclipse搭建android_ndk开发环境
- windows下eclipse搭建android_ndk开发环境
- windows系统cocos2d3.1 android eclipse adt NDK环境搭建
- Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建
- windows下eclipse_adt_sdk_ndk_opencv环境搭建
- Windows下Android+NDK开发环境搭建(JDK[8u45]+Eclipse+Android SDK[r24.1.2]+ADT+NDK[r10d])
- Android Eclipse NDK开发环境搭建
- Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建
- Ubuntu下搭建 eclipse+NDK for android JNI 的开发环境
- 【android开发记录片】2.基于Eclipse的JNI开发环境的搭建(cygwin+NDK)
- windows下eclipse搭建android_ndk开发环境
- Windows下Android+NDK+OpenCV开发环境搭建
- Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建
- windows下eclipse搭建android_ndk开发环境
- sdk+ndk+eclipse搭建android开发环境