Android OpenCV矩阵获取错误的值JNI Java

Android OpenCV矩阵获取错误的值JNI Java,android,c++,opencv,Android,C++,Opencv,我试图将OpenCV矩阵传递给cpp文件,但我从cpp中的Matix读取的数据不正确 我不知道我遗漏了什么,也许是指针的问题 这是我的cpp文件的一部分: jintArray Java_qc_yotm_mes_com_yo_1qc_MainActivity_stringFromJNI(JNIEnv *env,jclass cls,jint NUMBER_OF_HALF_LINES, jint HALF_LINE_LENGTH, jlong inMat) { cv::Mat* Gr

我试图将OpenCV矩阵传递给cpp文件,但我从cpp中的Matix读取的数据不正确

我不知道我遗漏了什么,也许是指针的问题

这是我的cpp文件的一部分:

   jintArray
Java_qc_yotm_mes_com_yo_1qc_MainActivity_stringFromJNI(JNIEnv *env,jclass cls,jint NUMBER_OF_HALF_LINES, jint HALF_LINE_LENGTH, jlong inMat) {

    cv::Mat* GraySubMat =  (cv::Mat*)inMat;
    unsigned char * MatData = GraySubMat->data;

    jdouble SumSpikesHeight = 0;
    jint ListOfPeaks = 0;

    jintArray ListSpikesCount = env->NewIntArray(2 * NUMBER_OF_HALF_LINES);
    jintArray ListSpikesCountHeight = env->NewIntArray(2 * NUMBER_OF_HALF_LINES);

    jint outarray[2 * NUMBER_OF_HALF_LINES];


    for(int line_number = 0 ; line_number <  2 * NUMBER_OF_HALF_LINES ; line_number++) {
        //Find Peaks on every 5 pixels
        for (int i = 2; i < (HALF_LINE_LENGTH * 2) - 3; i++) {

            if ((MatData[(line_number *HALF_LINE_LENGTH * 2)+i] > MatData[(line_number *HALF_LINE_LENGTH * 2)+i - 1]) && (MatData[(line_number *HALF_LINE_LENGTH * 2)+i] > MatData[(line_number *HALF_LINE_LENGTH * 2)+i - 2]) &&
                (MatData[(line_number *HALF_LINE_LENGTH * 2)+i] > MatData[(line_number *HALF_LINE_LENGTH * 2)+i + 1]) && (MatData[(line_number *HALF_LINE_LENGTH * 2)+i] > MatData[(line_number *HALF_LINE_LENGTH * 2)+i + 2]) &&
                (MatData[(line_number *HALF_LINE_LENGTH * 2)+i] > 0) ) {
                ListOfPeaks++;
                SumSpikesHeight += MatData[(line_number *HALF_LINE_LENGTH * 2)+i];

                i += 3;
            }
        }

        outarray[line_number] = ListOfPeaks*SumSpikesHeight;

        SumSpikesHeight = 0;
        ListOfPeaks=0;
    }
    env->SetIntArrayRegion(ListSpikesCountHeight, 0, 2 * NUMBER_OF_HALF_LINES, outarray);
    return ListSpikesCountHeight;
}
 int[] spikecountheight = stringFromJNI(NUMBER_OF_HALF_LINES, HALF_LINE_LENGTH, GraySubMat.getNativeObjAddr());