【问题标题】:JNI Mat to Java MatJNI Mat 到 Java Mat
【发布时间】:2014-03-31 18:10:24
【问题描述】:

我正在尝试将一个 Mat 对象从我的 C++ 源代码返回到我的 Java 代码。我有以下代码:

C++:

JNIEXPORT void JNICALL *snip*_MainActivity_grabResult
(jlong matPtr) {
    LOGD("The resultsImg has %d rows.", resultsImg.rows);
    LOGD("The sceneImg has %d rows.", sceneImg.rows);
    Mat* mat = new Mat(resultsImg.rows, resultsImg.cols, CV_8UC3);
    mat = (Mat*) matPtr;
    LOGD("Mat resultsImg is: %d", resultsImg.rows);
    LOGD("Mat* mat is %d", mat->rows);
}

Java:

public static native void grabResult(long add);
grabResult(m.getNativeObjAddr());

但是,它似乎没有通过 Mat 传递给我的 Java,因为 Java 中 Mat 的行大小为零,而在 C++ 代码中它是一个荒谬的数字,它不应该是一个数字。

任何帮助都会很棒。

【问题讨论】:

  • 什么是 matptr(在 c++ 代码中)?你为什么要用它覆盖新创建的 Mat ?
  • 请查看已审核的代码。老实说,我不知道我在用它做什么 - 这是我在网上查到的。

标签: java android opencv android-ndk mat


【解决方案1】:

什么是*snip*?原生方法可能是这样的:

JNIEXPORT void JNICALL Java_*snip*_MainActivity_grabResult(JNIEnv * env, jobject obj,  jint matPtr) {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多