由于《Master OpenCV with Pratical Computer Vision Projects》对其Android例子的环境配置没有详细介绍,所以我通过自己的摸索,把相关经验拿来与大家分享,希望大家能够少走点弯路。

我的环境及对应的保存路径如下:

Cygwin——【C:\Cygwin_】

android-ndk-r9——【C:\Work\android-ndk-r9】(我自己用了r8编译报错,r9却没问题,错误如下所示)

C:/AndroidSDK_Eclipse/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi-v7a/libopencv_contrib.a: No such file: Permission denied/cygdrive/c/AndroidSDK_Eclipse/android-ndk-r8/build/core/build-binary.mk:369: recipe for target `obj/local/armeabi-v7a/libcartoonifier.so' failedcollect2: ld returned 1 exit statusmake: *** [obj/local/armeabi-v7a/libcartoonifier.so] Error 1


OpenCV-2.4.6-android-sdk——【C:\Work\OpenCV4Android\OpenCV-2.4.6-android-sdk】

具体步骤如下:


1.首先,将Cartoonifier_Android放在C:\Work\OpenCV4Android\OpenCV-2.4.6-android-sdk\samples目录下(如果不放在这目录下,需要在Android.mk中更改相应的OpenCV.mk路径),并从Cartoonifier_Desktop中把cartoon.cpp、cartoon.h、ImageUtils_0.7.cpp、ImageUtils.h放在jni目录下;

当然,我们也在该目录下新建一个includeOpenCV.mk文件来指定OpenCV文件的位置,内容如下

OPENCV_MK_PATH:=C:\Work\OpenCV4Android\OpenCV-2.4.6-android-sdk\sdk\native\jni\OpenCV.mk


2.接着,我们来看一下Android.mk文件的中需要修改的内容:

#/****************************************************************************#*   Cartoonifier, for Android.#*****************************************************************************#*   by Shervin Emami, 5th Dec 2012 (shervin.emami@gmail.com)#*   http://www.shervinemami.info/#*****************************************************************************#*   Ch1 of the book "Mastering OpenCV with Practical Computer Vision Projects"#*   Copyright Packt Publishing 2012.#*   http://www.packtpub.com/cool-projects-with-opencv/book#****************************************************************************/LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)OPENCV_LIB_TYPE:=STATICOPENCV_INSTALL_MODULES:=on# Path to OpenCV.mk file, which is generated when you build OpenCV for Android.# include C:\OpenCV\android\build\OpenCV.mk# include ~/OpenCV/android/build/OpenCV.mk#include ../includeOpenCV.mk //把这句话注释include ../../sdk/native/jni/OpenCV.mk //加上这句话,前提是我们的工程是放在OpenCV-2.4.6-android-sdk\samples目录下的ifeq ("$(wildcard $(OPENCV_MK_PATH))","")    #try to load OpenCV.mk from default install location    #include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mkelse    #include $(OPENCV_MK_PATH)endifLOCAL_MODULE    := cartoonifierLOCAL_LDLIBS +=  -llog -ldl# Since we have source + headers files in an external folder, we need to show where they are.LOCAL_SRC_FILES := jni_part.cppLOCAL_SRC_FILES += cartoon.cpp //把desk_top项目中的源文件拷贝到Android目录下一起编译LOCAL_SRC_FILES += ImageUtils_0.7.cppLOCAL_C_INCLUDES += $(LOCAL_PATH)include $(BUILD_SHARED_LIBRARY)



3.之后,在eclipse的项目属性中选择C/C++ Builder->Environment,并定义NDK和PATH这两个环境变量


4.最后,还需要在Build Path->Configure Build Path中添加opencv library。


5.如果ImageUtils_0.7.cpp报错:format not a string literal and no format arguments,简单的办法只需要把相关的LOG注释掉就行了。 还有一些小细节可能会报错,通过修改project.properties和AndroidManifest.xml就OK了。
通过以上5步就可以右键选择build-all来编译生成动态库了。



更多相关文章

  1. [Android]高性能MMKV数据交互分析-MMKV初始化
  2. android 模拟器手机如何添加文件到sd卡?
  3. error: Error parsing XML: unbound prefix 与 error: Invalid s
  4. Android(安卓)ListView动画(逐行显示动画效果)
  5. Base64方式上传文件
  6. Android(安卓)SDK Manager浅析
  7. Android(安卓)studio的那些坑- so文件添加的正确位置
  8. Android(安卓)ADB详细介绍及用法
  9. Android应用程序四大组件之使用AIDL如何实现跨进程调用Service

随机推荐

  1. Android音频开发(1):基础知识
  2. Android(安卓)下使用 JSON 实现 HTTP 请
  3. Android与Linux的区别与联系
  4. Android实时抓包分析 : 善用adb调试桥
  5. Android事件分发机制详解:史上最全面、最
  6. Android的交叉编译工具
  7. Android程序员必看之Android六大优势
  8. 记录一下八款开源 Android(安卓)游戏引擎
  9. 关于自己Android开发的感想,怎样深入系统
  10. What is Android?