gpt4 book ai didi

Android - 访问预编译库中的 native 函数

转载 作者:行者123 更新时间:2023-12-02 17:52:43 25 4
gpt4 key购买 nike

我想使用原生 OpenCV 函数 getThreshVal_Otsu_8u 在我的 Android 应用程序中。我注意到外部 OpenCV Java 包装函数调用定义为 native 的函数,但与实际的 native 函数名称不同。例如:

Java函数:

double threshold(Mat src, Mat dst, double thresh, double maxval, int type)

Java“ native ”功能:
private static native double threshold_0(long src_nativeObj, long dst_nativeObj, double thresh, double maxval, int type)

C++ 函数:
double cv::threshold( InputArray _src, OutputArray _dst, double thresh, double maxval, int type )

如何制作类似的 native调用 getThreshVal_Otsu_8u 的 Java 函数?有什么方法可以避免重建 OpenCV 库而只是“隧道”到现有的 .lib文件?

最佳答案

如果还没有,您首先需要设置您的 Android 项目以使用 Java 原生接口(interface) (this link might help)。

设置好之后,原理就很简单了:

  • 你需要在你的 Java 代码中创建一个 Java 原生原型(prototype)(例如 public native void yourFunction(); )
  • 相应的函数必须在您的 C/C++ 文件中定义(例如 JNIEXPORT void JNICALL Java_your_package_JavaClassName_yourFunction(JNIEnv * env, jobject obj); )
  • 您应该能够在您的 C/C++ 代码中包含 OpenCV 库(例如 #include <opencv2/core/core.hpp> )

  • 您要使用的方法(即 getThreshVal_0tsu_8u )采用 Mat&作为参数并返回一个 double ,这意味着您需要相应地调整您的 jni 代码。

    关于Android - 访问预编译库中的 native 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390092/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com