Android 集成 OpenCV native library

来源:互联网 发布:淘宝产品图片怎么做 编辑:程序博客网 时间:2024/05/17 09:39
  1. Android集成OpenCV native library:
    1. 目前来看,OpenCV提供的SDK中已经附带了编译好的.a和.so库,使用者可以根据自己的需要选择动态或者静态库链接。
    2. OpenCV SDK下载地址: http://opencv.org/releases.html
    3. 选择对应版本的Android pack下载。
    4. 解压开会发现有一个sdk目录(这里以3.0.0版本为例)。
    5. sdk/native/libs包含了OpenCV已经编译好的.a静态库和.so动态库。静态库的数量很多,估计是编译的时候直接分模块编译了,个人估计没准可以按功能选择性的引入静态库。不过动态库就只有一个。
    6. sdk/native/libs中包含了OpenCV所依赖的其他第三方库,这里就只有静态库,因为这种应用场景下只能使用静态库。
    7. sdk/native/jni包含了include头文件和各种cmake/mk来进行集成编译。
    8. 一般来说,要将库集成到自己的App中,是需要将库文件和头文件的路径加入到Android.mk中的,并且还需要修改其中的一些编译配置。不过OpenCV在这里就很方便,其sdk/native/jni/中的OpenCV.mk已经替你将上面这些步骤全部包含了。你要做的主要就是将OpenCV.mk include到你的Android.mk中。
  2. OpenCV.mk使用的一些要点:
    1. OpenCV.mk会修改LOCAL_XXX变量使得你在include之后基本就可以直接使用,因此,在include OpenCV.mk 后,在使用其提供的信息进行编译前,不要调用include $(CLEAR_VARS),否则前面OpenCV.mk配置的LOCAL_XXX就被清除了,编译会失败
    2. OpenCV.mk集成静态库:
      1. 需要在include前这样设定变量: OPENCV_LIB_TYPE := STATIC OPENCV_LIB_TYPE是OpenCV.mk内部使用的变量
    3. OpenCV.mk集成动态库
      1. 需要在include前这样设定变量:
        1. OPENCV_LIB_TYPE := SHARED
        2. OPENCV_INSTALL_MODULES:=on (这一步会将so库加入到$(PREBUILT_SHARED_LIBRARY)中,后面才能进行link)
        3. LOCAL_SHARED_LIBRARIES中增加opencv_java3 (为什么叫这个名字,可以参阅OpenCV.mk, 但貌似3.2不需要这一步了)
    4. OpenCV.mk会替你把OpenCV的头文件都添加到LOCAL_C_INCLUDES中,因此你不需要在自己的Android.mk中在配置。
    5. 建议通读OpenCV.mk,本身很简单。
0 0