频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
android开发 使用cmake构建jni工程,并添加opencv模块
2017-12-28 10:34:51      个评论    来源:u013620235的博客  
收藏   我要投稿

向现有项目添加 C/C++ 代码

1.切换到project试图,在app下,打开build.gradle

在android{}中添加:

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

2.project>>app>>new>>file 创建CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
set(ProjectDir /home/cuizhou/codes/AndroidStudioProjects/CuiZhou-JNI-OpenCV-SSD-Mobilenet-Demo)

#-----------------------------------------------------
# wrapper

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp)

find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib}

                       # lib_opencv)

3.编写java native 方法,并生成头文件
在MainActivity中添加native方法

    public native String stringFromJNI();

或者新建类 MyClass.java, 生成头文件

cd project/app/src/main/java
javah com.example.MyClass

4.新建cpp,实现jni函数

添加opencv模块

从观望上下载android for opencv
把OpenCV-android-sdk/sdk/native/libs拷贝到src/main/目录下,重新命名为jniLibs

在CMakeList中添加

#-----------------------------------------------------
# OpenCV
set(pathToOpenCv /home/cuizhou/codes/AndroidStudioProjects/OpenCV3.4-android-sdk)
include_directories(${pathToOpenCv}/sdk/native/jni/include)
add_library(lib_opencv STATIC IMPORTED )
set_target_properties(lib_opencv
                       PROPERTIES
                       IMPORTED_LOCATION ${ProjectDir}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so
                       )

在native cpp中可以使用opencv

#include 
#include 
#include 
#include 

using namespace cv;
...
cv::Mat srcImage=cv::Mat::zeros(cv::Size(300,300),CV_8UC1);
...
点击复制链接 与好友分享!回本站首页
上一篇:Android系统应用程序进程类型解析
下一篇:Android通过内容提供器获取相册中所有图片
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站