我将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的所有操作都会发生。
这是什么意思?
答案 0 :(得分:-1)
我不确定你要做什么。但cv::Mat
本质上是实际Mat.data
的包装。通常,人们不希望直接赋值image=croppedImage
,特别是当它们被传递参数时。
如果要复制图像数据,可以使用croppedImage.copyTo(image)
。