使用opencv源码自己编制android so库的过程

本文档详述了如何使用opencv2.4.8源码在Ubuntu12.04环境下,通过Android NDK r9c编译core、imgproc、highgui三个模块的动态库,以减小APK体积并避免依赖OpenCV Manager。通过编写Android.mk文件,配置编译选项和依赖库,最终在Eclipse中设置C++支持路径,成功编译生成so库。
摘要由CSDN通过智能技术生成

工作需要,在android上使用opencv。opencv当前的版本(2.4.8)已经有了opencv4android,但是一方面这个SDK将所有opencv的功能打到了一个so包里,所以so的体积较大,从而造成使用该so的apk也大,上层对此不太满意;另一方面,使用opencv4android必须在手机上安装openv manager,上层对此也感觉有点别扭。所以我尝试用opencv的源码自己编译应用于android平台的opencv动态库以供底层开发用。首先介绍一下相关环境:

opencv:  opencv2.4.8 (linux)

系统:ubuntu12.04

开发环境:eclipse juno(with CDT等),  android ndk r9c


针对android开发可用的so库需要用ndk build编译,我详细查看了下opencv.org上的文档,上面只有opencv在linux,win等上的编译方法,当然还有opencv4android的使用方法。网上的文档找到一个使用老版本opencv来自己编译的帖子,但版本较老就没采用,所以只能自己分析下opencv的源码写mk文件进行编译。


为了压缩动态库的体积,也根据自己的实际需求,暂时只编译了三个库:core,imgproc,highgui. 幸运的是,新版本的opencv模块化比较好,所以不存在太多源码拆分的问题。所以,将源码中module文件夹下的三个模块源码放到jni/opencv目录下就可以了。之后在opencv文件夹下编写Android.mk文件,如下:

LOCAL_PATH:= $(call my-dir)
ZLIB_PATH:= /home/yxh/eclipse/android-ndk-r9c/platforms/android-14/arch-arm/usr

#opencv_core module
include $(CLEAR_VARS)

LOCAL_MODULE := libopencv_core

LOCAL_C_INCLUDES := \
        $(LOCAL_PATH)/core/include \
        $(ZLIB_PATH)/include
                               
LOCAL_CPPFLAGS := -frtti -fexceptions
LOCAL_LDLIBS += -llog -lz

LOCAL_SRC_FILES := \
         core/src/precomp.cpp \
         core/src/algorithm.cpp \
         core/src/alloc.cpp \
         core/src/arithm.cpp \
         core/src/array.cpp \
         core/src/cmdparser.cpp \
         core/src/convert.cpp \
         core/src/copy.cpp \
         core/src/datastructs.cpp \
         core/src/drawing.cpp \
         core/src/dxt.cpp \
         core/src/gpumat.cpp \
         core/src/lapack.cpp \
         core/src/mathfuncs.cpp \
         core/src/matmul.cpp \
         core/src/matop.cpp \
         core/src/matrix.cpp \
         core/src/opengl_interop_deprecated.cpp \
         core/src/opengl_interop.cpp \
         core/src/persistence.cpp \
         core/src/parallel.cpp \
         core/src/rand.cpp \
         core/src/stat.cpp \
         core/src/system.cpp \
         core/src/tables.cpp
                        
include $(BUILD_SHARED_LIBRARY)


#opencv_imgproc module

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值