Android Studio NDK OpenCV:c ++代码无法使用Mat

时间:2016-01-28 12:20:11

标签: android c++ opencv android-studio android-ndk

我将OpenCV包含在Android Studio应用中的原生代码中。并编写了一个测试函数:

JNIEXPORT jint JNICALL Java_com_atapy_wisetrend3_MainActivity_Search(JNIEnv *env, jclass type, cv::Mat image,cv::Mat croppedImage) 
{
    croppedImage = image;
    return 1;
}

但是当我调用函数Search时,Java中的调用函数的执行会停止而没有任何错误。在logcat中我有这样的消息:

  

“致命信号11(SIGSEGV)位于0x11c00041(代码= 1),线程16754   (tapy.wisetrend3)”。

如果我擦除行"croppedImage = image",则函数成功并返回1.这对于Mat的所有操作都会发生。

这是什么意思?

1 个答案:

答案 0 :(得分:-1)

我不确定你要做什么。但cv::Mat本质上是实际Mat.data的包装。通常,人们不希望直接赋值image=croppedImage,特别是当它们被传递参数时。

如果要复制图像数据,可以使用croppedImage.copyTo(image)