JJONeal 2014-07-28 17:26 采纳率: 0%
浏览 1909

Android上利用JNI调用OpenCV函数时出现Fatal signal 11错误

我想在Android上用OpenCV实现人脸识别功能,即事先有一个我提供的人脸训练库,然后检测出人脸后,识别他和训练库中的哪类人最像。

我已在windows平台实现了该功能,并将训练好的FaceRecognizer通过save的方式存储成了xml。我将xml文件放入了Android手机某目录下,然后想利用JNI的方式在Android app中使用OpenCV载入该数据库,但运行到这一行就会报错:

Fatal Signal 11 (SIGSEGV) at 0x42ff0000 (code=2), thread 8703...

这是我的相关代码:

JNIEXPORT jlong JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject
(JNIEnv * jenv, jclass, jstring jFileName, jint faceSize)
{
//解析文件目录
const char* jnamestr = jenv->GetStringUTFChars(jFileName, NULL);
string stdFileName(jnamestr);

​FaceRecognizer model = (FaceRecognizer)createEigenFaceRecognizer(100,10000.0);
try
{
model->load(stdFileName);
}

望朋友们出谋划策!十分感谢!

  • 写回答

1条回答 默认 最新

  • 打酱油的工程师 单片机领域优质创作者 2023-01-04 23:49
    关注

    "Fatal signal 11" 错误通常是由于应用程序在运行时发生了编程错误或内存错误,导致系统终止应用程序的运行。

    在 Android 上调用 JNI 接口调用 OpenCV 函数时,如果遇到 "Fatal signal 11" 错误,可以尝试以下方法来解决这个问题:

    在应用程序代码中添加调试信息,尝试找出错误的源头。可以使用 Log 函数输出调试信息,并在 logcat 中查看调试信息。

    在调用 JNI 函数之前,检查传入的参数是否有误。如果参数错误,可能会导致 JNI 函数运行时出现 "Fatal signal 11" 错误。

    在调用 JNI 函数之前,检查手机的内存使用情况。如果内存不足,可能会导致 "Fatal signal 11" 错误。

    尝试使用较新版本的 OpenCV 库,看看能否解决问题。

    如果以上方法都无法解决问题,可以尝试在网上搜索相关信息,或者在 OpenCV 官方论坛寻求帮助。

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序