使用OpenCV Android时,应用程序在英特尔x86架构上崩溃

时间:2015-10-08 15:10:20

标签: android c++ eclipse opencv

我在Android上使用OpenCV,将Eclipse作为IDE 我希望使用OpenCV的Cpp API在Android上加快处理速度 为此我将项目转换为C ++性质,将构建过程配置为使用在Android上使用OpenCV Cpp API所需的JNI。 我可以在手机上运行'OpenCV Tutorial 2 - Mixed Processing'示例示例(包含Cpp部分)(因此基本配置正确)

现在我创建了一个新项目,其中包含C ++代码。它可以在基于ARM的手机上进行编译,安装和运行 但是在基于x86的手机(ASUS Zenphone 2)上,它会在执行到c ++代码时崩溃 确切地说,当从C ++调用任何函数时,应用程序崩溃(如Canny(...))其他语句(如变量声明)不会使应用程序崩溃。

请提前帮助和谢谢。

我在Application.mk中将x86包含为ABI

/*** Application.mk ***/
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := x86 armeabi-v7a
APP_PLATFORM := android-8

以下是从onFrame方法

调用的C ++代码
#include <jni.h>
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

extern "C" {
JNIEXPORT void JNICALL Java_com_example_javaapitest_MainActivity_processImage(JNIEnv* jobject, jlong addrRgba, jlong addrGray);

JNIEXPORT void JNICALL Java_com_example_javaapitest_MainActivity_processImage(JNIEnv* jobject, jlong addrRgba, jlong addrGray,jlong addrTemp){
    Mat& rgb = *(Mat*)addrRgba;
    Mat& gray = *(Mat*)addrGray;
    Mat& temp = *(Mat*)addrTemp;
    RNG rng(12345);
    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;

    /// Detect edges using canny
    /*********Crashes on below line****************/
    Canny( gray, temp, 100, 200); 
}
}

0 个答案:

没有答案