我想在Android应用程序中使用原生OpenCV函数getThreshVal_Otsu_8u
。我注意到外部OpenCV Java包装器函数调用定义为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
Java函数来调用getThreshVal_Otsu_8u
?有没有办法避免重建OpenCV库并只是“隧道”到现有的.lib
文件中?
答案 0 :(得分:1)
如果不是这种情况,首先需要设置Android项目才能使用Java Native Interface(this link might help)。
一旦设置完成,原则很简单:
public native void yourFunction();
)JNIEXPORT void JNICALL Java_your_package_JavaClassName_yourFunction(JNIEnv * env, jobject obj);
)#include <opencv2/core/core.hpp>
)您要使用的方法(即getThreshVal_0tsu_8u
)将Mat&
作为参数并返回一个double,这意味着您需要相应地调整您的jni代码。