我在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);
}
}