安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装

一、项目创建

创建NDK项目有两种方式,一种从新创建整个项目,一个在创建好的项目添加NDK接口。

1.创建NDK项目

创建 一个Native C++项目:
在这里插入图片描述
选择包名、API版本与算法交互的语言:
在这里插入图片描述
选择C++版本:
在这里插入图片描述
创建完之后,可以在项目中看到一个jni或者cpp的目录,目录包含一个CMakeLists.txt文件一个xxx.cpp文件:
在这里插入图片描述

2.添加NDK项目

在main目录添加一个目录,可命名为cpp或者jni都行:
在这里插入图片描述
把创建好的目录转化为JNI交互目录:
在这里插入图片描述
转化成功之后,目录下包含一个CMakeLists.txt文件一个xxx.cpp文件:
在这里插入图片描述

3.添加NDK依赖

选择使用的NDK版本:
在这里插入图片描述
选择CMake版本:
在这里插入图片描述
把下载好的NDK添加到配置文件:
在这里插入图片描述

4.测试与使用

添加类Java交互类:
在这里插入图片描述
在java交互类里面接口与jni交互的API:

package com.example.docscan;
public class scanlib
{
   
    
    
    public native String stringFromJNI();
    // Used to load the 'docscan' library on application startup.
    static {
   
    
    
        System.loadLibrary("docscan");
    }

}

在xxx.cpp里面实现函数功能:

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_docscan_scanlib_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
   
    
    
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

在MainActivity类里面调用函数:

public class MainActivity extends AppCompatActivity {
   
    
    


    private ScanLib scan_lib = new ScanLib();
    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle