Master OpenCV with Pratical Computer Vision Projects——如何编译Cartoonifier_Android
2013-08-21 14:40
483 查看
由于《Master OpenCV with Pratical Computer Vision Projects》对其Android例子的环境配置没有详细介绍,所以我通过自己的摸索,把相关经验拿来与大家分享,希望大家能够少走点弯路。
我的环境及对应的保存路径如下:
Cygwin——【C:\Cygwin_】
android-ndk-r9——【C:\Work\android-ndk-r9】(我自己用了r8编译报错,r9却没问题,错误如下所示)
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文件的位置,内容如下
2.接着,我们来看一下Android.mk文件的中需要修改的内容:
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来编译生成动态库了。
我的环境及对应的保存路径如下:
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' failed collect2: ld returned 1 exit status make: *** [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:=STATIC OPENCV_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.mk else #include $(OPENCV_MK_PATH) endif LOCAL_MODULE := cartoonifier LOCAL_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.cpp LOCAL_SRC_FILES += cartoon.cpp //把desk_top项目中的源文件拷贝到Android目录下一起编译 LOCAL_SRC_FILES += ImageUtils_0.7.cpp LOCAL_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来编译生成动态库了。
相关文章推荐
- 整理《Mastering OpenCV with Practical Computer Vision Projects》中第5章用SVM和神经网络进行车牌识别操作流程
- 翻译:Mastering OpenCV with Practical Computer Vision Projects(第8章)(一)
- 《Mastering OpenCV with Practical Computer Vision Projects》7位作者的博客
- 整理《Mastering OpenCV with Practical Computer Vision Projects》中第5章用SVM和神经网络进行车牌识别操作流程
- 2012 OpenCV新书下载--Master OpenCV with Practical Computer Vision Projects
- 各位,谁跑过Mastering opencv with practical computer vision projects的第二章那个ios现实增强的例子
- 整理《Mastering OpenCV with Practical Computer Vision Projects》中第8章用Eigenfaces或Fisherfaces进行人脸识别操作流程
- 整理《Mastering OpenCV with Practical Computer Vision Projects》中第8章用Eigenfaces或Fisherfaces进行人脸识别操作流程
- Mastering OpenCV with Practical Computer Vision Projects_full 章节翻译-7
- 翻译:Mastering OpenCV with Practical Computer Vision Projects(第8章)(二)
- OpenCV新书<Mastering OpenCV with Practical Computer Vision Projects>
- Mastering OpenCV with Practical Computer Vision Projects 学习笔记 - Cartoonifier
- 人脸识别之人眼定位、人脸矫正、人脸尺寸标准化---<Mastering OpenCV with Practical Computer Vision Projects >
- Windows中如何在Visual Studio 2015环境里编译OpenCV 3.1并加入opencv_contrib-master
- <<python computer vision with opencv>> chapter 2
- 如何为Android平台编译 opencv3 和 opencv_contrib (Linux)
- 新书推荐:Mastering OpenCV with Practical Computer Vision Projects
- 《OpenCV Computer Vision with Python》pdf
- OpenCV书籍:Mastering OpenCV with Practical Computer Vision Projects
- [新书推荐]A Practical Introduction to Computer Vision with OpenCV